我已经知道Python有ssh模块,这不是我想要的。 我想要的是一个python脚本来执行以下操作:
提前致谢,
致以最诚挚的问候,
答案 0 :(得分:10)
使用paramiko
,请参阅http://jessenoller.com/2009/02/05/ssh-programming-with-paramiko-completely-different/以获取使用它的示例。
答案 1 :(得分:4)
答案 2 :(得分:4)
现在流行的解决方案是Fabric
答案 3 :(得分:2)
如果您实际上正在寻找一个可以自动化CLI交互的模块,那么pexpect
答案 4 :(得分:1)
有很多图书馆可以做到这一点。
您可以查看他们的文档以了解实施情况。
答案 5 :(得分:0)
您可以使用专门为此设计的vassal软件包。
您所需要做的就是安装vassal并执行
from vassal.terminal import Terminal
shell = Terminal(["ssh username@host", "cd scripts", "python foo1.py", "python foo2.py"])
shell.run()
这将每秒运行一次命令,您可以使其更快地更改sec = 0.1。
答案 6 :(得分:0)
我会向您推荐:
import spur
shell = spur.SshShell(hostname="localhost", username="bob", password="password1", missing_host_key=spur.ssh.MissingHostKey.accept)
result = shell.run(["echo", "-n", "hello"])
print(result.output) # prints hello
import paramiko
hostname = 'enter_host'
username = 'enter_user'
password = 'enter_pass'
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, username=username, password=password)
stdin, stdout, stderr = client.exec_command('cd /enter/valid/path && ls -l')
for line in stdout:
print(line.strip('\n'))
client.close()
输出:
-rw-rw-r-- 1 username username 2712 Jan 22 14:49 file_1.ini
-rw-rw-r-- 1 username username 5928 Jan 22 14:50 file_2.log
-rw-rw-r-- 1 username username 1454 Jan 14 23:31 file_3.sql
-rw-rw-r-- 1 username username 337 Jan 14 23:31 file_4.py
drwxrwxr-x 3 username username 4096 Jan 14 23:33 folder_1
drwxrwxr-x 2 username username 4096 Jan 14 23:33 folder_2
-rw-rw-r-- 1 username username 2566 Jan 21 12:38 file_5.md
-rw-rw-r-- 1 username username 63 Jan 14 23:31 file_6.txt
drwxrwxr-x 4 username username 4096 Jan 14 23:31 folder_3
drwxrwxr-x 9 username username 4096 Jan 21 12:38 folder_4
import subprocess
subprocess.Popen("ssh {user}@{host} {cmd}".format(user=user, host=host, cmd='ls -l'), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()