我正在重写我写入Python的Bash脚本.那个剧本的关键是
ssh -t first.com "ssh second.com very_remote_command"
Run Code Online (Sandbox Code Playgroud)
我在使用paramiko进行嵌套身份验证时遇到问题.我无法找到任何处理我的确切情况的例子,但我能够在远程主机上找到sudo的例子.
第一种方法写入stdin
ssh.connect('127.0.0.1', username='jesse', password='lol')
stdin, stdout, stderr = ssh.exec_command("sudo dmesg")
stdin.write('lol\n')
stdin.flush()
Run Code Online (Sandbox Code Playgroud)
第二个创建一个通道并使用类似socket的send和recv.
我能够让stdin.write与sudo一起工作,但它不能与远程主机上的ssh一起使用.
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('first.com', username='luser', password='secret')
stdin, stdout, stderr = ssh.exec_command('ssh luser@second.com')
stdin.write('secret')
stdin.flush()
print '---- out ----'
print stdout.readlines()
print '---- error ----'
print stderr.readlines()
ssh.close()
Run Code Online (Sandbox Code Playgroud)
... ...打印
---- out ----
[]
---- error ----
['Pseudo-terminal will not be allocated …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu上用python编写程序,ls -l在RaspberryPi上执行命令,与Network连接.
任何人都可以指导我如何做到这一点?