如何通过Paramiko单个SSH对象连续执行命令?能否用分号分隔?
使用单个SSH对象执行多条命令的正确方式
当然可以通过分号分隔命令来实现!不过先纠正一下你代码里的小语法问题,再聊聊几种实用的方案:
基础分号写法:你需要把两个命令放在同一个字符串里用分号分隔(分号要在引号内部),正确的代码应该是这样:
stdout = ssh.exec_command('command1; command2')这种写法的逻辑是,远程shell会先执行
command1,不管它执行成功还是失败,都会接着执行command2。条件执行写法:如果希望只有
command1执行成功后才运行command2,可以用&&代替分号:stdout = ssh.exec_command('command1 && command2')这在需要保证命令执行顺序依赖关系的场景下更实用,避免前序命令出错后继续执行后续操作。
注意事项:
- 这种方式依赖远程主机的标准shell(比如bash、sh)支持,如果远程端禁用了shell或者使用非标准shell,可能无法正常工作。
- 两个命令的输出会合并到同一个
stdout中,如果需要分别获取每条命令的输出,分开调用exec_command会更清晰:# 执行第一条命令并获取输出 _, stdout1, stderr1 = ssh.exec_command('command1') output1 = stdout1.read().decode() error1 = stderr1.read().decode() # 执行第二条命令并获取输出 _, stdout2, stderr2 = ssh.exec_command('command2') output2 = stdout2.read().decode() error2 = stderr2.read().decode()
内容的提问来源于stack exchange,提问作者Elias Shourosh
相关产品推荐
相关产品推荐

