作者:8877Lyt_953 | 来源:互联网 | 2023-02-06 01:51
如何使用python 实现 一个ssh客户端,可以发送一连串的命令,而不是发一个命令?
使用 paramiko 模块。如果没有,安装一个。
pip install paramiko
上一个可以用的代码。
import os
import sys
import paramiko
import time
import select
class sshClient:
def __init__(self,host,port,user,password):
self.trans = paramiko.Transport((host, port));
self.trans.start_client();
self.trans.auth_password(username=user, password=password);
self.channel = self.trans.open_session();
self.channel.get_pty();
self.channel.invoke_shell();
def sendCmd(self,cmd):
self.channel.sendall(cmd);
def recvResponse(self,timeout):
data=b'';
while True:
try:
readable,w,e= select.select([self.channel],[],[],timeout);
if self.channel in readable:
data = self.channel.recv(1024);
sys.stdout.write(data.decode())
sys.stdout.flush()
else:
return data.decode();
except TimeoutError:
return data.decode;
def close(self):
self.channel.close()
self.trans.close()
host='your ip';
port=22;
user='your user';
pwd='your pwd';
ssh = sshClient(host,port,user,pwd);
response = ssh.recvResponse(1)
response = ssh.sendCmd("lsn");
ssh.sendCmd("cd /home/renyj/myworkn");
response = ssh.recvResponse(1);
ssh.sendCmd("lsn");
response = ssh.recvResponse(1);
ssh.close();
效果如图所示
一旦建立这个连接之后,就仿佛是手动连接ssh一样。