mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-09 07:16:04 +00:00
chore: 提交部分测试文件
This commit is contained in:
57
tests/ssh_client_test/ssh_client.py
Normal file
57
tests/ssh_client_test/ssh_client.py
Normal file
@@ -0,0 +1,57 @@
|
||||
import os
|
||||
import sys
|
||||
import paramiko
|
||||
import time
|
||||
import select
|
||||
|
||||
|
||||
class sshClient:
|
||||
#创建一个ssh客户端,和服务器连接上,准备发消息
|
||||
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:
|
||||
#使用select,不断的读取数据,直到没有多余的数据了,超时返回。
|
||||
readable,w,e= select.select([self.channel],[],[],timeout)
|
||||
if self.channel in readable:
|
||||
data = self.channel.recv(1024)
|
||||
else:
|
||||
sys.stdout.write(data.decode())
|
||||
sys.stdout.flush()
|
||||
return data.decode()
|
||||
except TimeoutError:
|
||||
sys.stdout.write(data.decode())
|
||||
sys.stdout.flush()
|
||||
return data.decode
|
||||
#关闭客户端
|
||||
def close(self):
|
||||
self.channel.close()
|
||||
self.trans.close()
|
||||
|
||||
host='host'
|
||||
port=22#your port
|
||||
user='root'
|
||||
pwd='pass'
|
||||
|
||||
ssh = sshClient(host,port,user,pwd)
|
||||
response = ssh.recvResponse(1)
|
||||
response = ssh.sendCmd("ls\n")
|
||||
ssh.sendCmd("cd /home\n")
|
||||
response = ssh.recvResponse(1)
|
||||
ssh.sendCmd("ls\n")
|
||||
response = ssh.recvResponse(1)
|
||||
|
||||
ssh.close()
|
||||
Reference in New Issue
Block a user