打开一个putty窗口并运行ssh命令 - Python

时间:2016-05-07 15:04:57

标签: python python-2.7 ssh

我是python的新手。我需要每天登录服务器(桌面 - > 1.32 - > 0.20 - > 3.26)。为此我需要打开putty并使用ssh连接我正在登录。为了做到这一切,我想用python编写一个脚本。

通过使用谷歌我认为subprocess.Popen会这样做。但它不能正常工作。

第1道:

import subprocess
pid = subprocess.Popen("putty.exe user@xxx.xx.x.32 -pw password").pid

工作正常(打开窗口登录到.32)。但是无法提供意见。我开始知道要为同一个过程提供输入,我们需要使用管道。

第二道:

from subprocess import Popen, PIPE, STDOUT
p = Popen("putty.exe user@xxx.xx.x.32 -pw password", stdout=PIPE, stdin=PIPE, stderr=STDOUT)    
grep_stdout = p.communicate(input=b'ssh xx.xx.x.20\n')[0]
print(grep_stdout.decode())

通过使用这个我也无法登录第一台服务器。登录到所有服务器后,我需要将终端设置为活动状态。怎么做???

修改

我需要在新的putty窗口中执行此操作。登录后不要关闭窗口。我有一些手工工作要做。

4 个答案:

答案 0 :(得分:0)

python:http://www.paramiko.org/有一个SSHv2协议实现。您可以使用pip轻松安装它:

pip install paramiko

然后您可以创建ssh客户端,连接到您的主机并执行命令:

import paramiko
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect('hostname', username='login', password='pwd')
stdin, stdout, stderr = ssh_client.exec_command('command')

答案 1 :(得分:0)

使用paramiko库python 使用 -

建立SSH连接
.controller('AccountCtrl', function($scope, wpService){
    $scope.wpService = wpService;
}

使用 -

检查连接是否处于活动状态
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username, password)

ssh.exec_command()基本上是一个会话。使用exec_command(command1; command2)在一个会话中执行多个命令

此外,您可以使用它在单个会话中执行多个命令

status =  ssh.get_transport().is_active()
#returns True if connection is alive/active

答案 2 :(得分:0)

使用powershell调用腻子以打开新窗口

from subprocess import Popen
Popen("powershell putty.exe user@host -pw mypassword")

答案 3 :(得分:0)

我在 Windows 上创建了一个 bat 文件,它引用了腻子和腻子会话特定的信息。这个bat文件可以在windows上自己运行。要从 python 调用,我使用了 subprocess.run() -- python 3.5+。

名为 putty.bat 的 bat 文件示例:

start c:\app\PuTTy\putty.exe -load 192.168.1.230-node1-logs -l <logon user> -pw <logon user password for putty session>

分解bat文件:

  1. 它以窗口的命令“开始”开始。
  2. c:\app\PuTTy\putty.exe --> 是 Windows 上包含 putty.exe 的 putty 目录。
  3. -load --> 告诉 putty 加载一个 putty 配置文件。配置文件是您在 Putty 客户端上的“已保存会话”下看到的名称。
  4. 192.168.1.230-node1-logs --> 我的腻子会话特定配置文件。
  5. -l 用于登录 --> 后跟 Putty 登录用户。
  6. -pw 是登录密码 --> 后跟 putty 登录密码。 “putty.bat”的内容到此结束。

在 python 中,使用 subprocess.run() 命令。

示例:

import subprocess
...
...
                try:

                    process = subprocess.run(["putty.bat"], check=True, stdout=subprocess.PIPE, universal_newlines=True)

                    print(process.stdout)

                except Exception as e:

                    print("subprocess call error in open putty command")
                    
                    print(str(e))

希望这对您有帮助