簡體   English   中英

Paramiko ssh/sftp 多個命令

[英]Paramiko ssh/ sftp multiple commands

我正在嘗試使用 python 和 paramiko(使用我的基本初學者邏輯)實現一些自動化。

下面的代碼我很高興地說有效。 直到我添加命令 'rm -f testtrace.pcap 以刪除通過 sftp 下載的文件。

定義登錄憑據

host = input("Host: ")
user = input("User: ")
port = 22
password = getpass("Password: ")

打開 ssh 連接

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port=port, username=user, password=password)

執行命令 run tcpdump

stdin, stdout, stderr = ssh.exec_command('timeout 10 tcpdump port 5060 -nnv -s 0 -w testtrace.pcap')
channel = stdout.channel
channel.recv_exit_status()
ssh.close()

打開 sftp 連接

transport = paramiko.Transport((host, port))
transport.connect(username=user, password=password)
sftp = paramiko.SFTPClient.from_transport(transport)

文件下載

filepath = '/root/testtrace.pcap'
localpath = 'C:\\Users\\******\\Desktop\\python\\testtrace.pcap'
sftp.get(filepath, localpath)

執行命令刪除文件

stdin, stdout, stderr = ssh.exec_command('rm -f testtrace.pcap')
channel = stdout.channel
channel.recv_exit_status()
ssh.close()

沒錯,我已經苦苦掙扎了一兩天的問題,我設法在注冊 Stackoverflow 后的 10 分鍾內解決了!。

執行命令 run tcpdump

stdin, stdout, stderr = ssh.exec_command('timeout 10 tcpdump port 5060 -nnv -s 0 -w testtrace.pcap')
channel = stdout.channel
channel.recv_exit_status()

我過早地關閉了 ssh 連接。 通過從本節中刪除 ssh.close() 似乎已經解決了問題並且現在可以正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM