【问题标题】:python ssh automation scriptpython ssh 自动化脚本
【发布时间】:2018-11-17 03:42:12
【问题描述】:

我想构建一个自动化脚本,用于在运行 linux 的远程服务器上执行许多命令,并检查每个命令的“退出代码”并将其与语句进行比较

到目前为止,作为一个绝对初学者,我有以下几点:

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('192.168.124.154', username='root', password='password')

stdin, stdout, stderr = client.exec_command('ls -l')

for line in stdout:
    print line.strip('\n')

client.close()

你能帮我推荐一个吗?

【问题讨论】:

  • 也许使用 Ansible?它使用 python 和 yaml。

标签: python linux ssh


【解决方案1】:
child = pexpect.spawn('ssh admin@' +ip)
child.expect ('Login: ')
child.sendline (username)
child.expect ('Password: ')
child.sendline (password)
child.expect('#') # or expect `$`.
child.sendline('<your command>')
child.expect('#')
print child.before

参考:http://pexpect.sourceforge.net/pexpect.html

使用pexpect 更容易。

【讨论】:

  • 谢谢@vks!我想用这个脚本实现的是在远程服务器中执行一个命令(这对我来说很清楚),然后验证命令的退出代码,如果成功则执行下一个脚本
  • @vks,正如目前所写的那样,这很危险——使用pipes.quote(ip) 比使用ip 更安全;否则,如果有人恶意在$(rm -rf ~) 的 IP 地址中提供信息,那么您将面临坏消息。
  • @CharlesDuffy thanx...不知道这个
【解决方案2】:

您可以使用专门为此设计的vassal 包。

你只需要安装vassal并做

from vassal.terminal import Terminal
shell = Terminal(["ssh username@host", "cd scripts", "python foo1.py", "python foo2.py"])
shell.run()

它将在 python 中启动一个交互式窗口,您可以从中解析退出代码。此外,它将为您保存身份验证凭据,而无需一次又一次地键入它们。

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2017-02-23
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多