shell 为什么Paramiko中某些命令的输出(如“ls”列表中的文件顺序)与手动SSH会话不同?

bvk5enib  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(102)

当我们使用Python的Paramiko库的ssh.exec_command发送命令时。之后,我们将收到三个参数作为输出:stdinstdoutstderr。因此,我想将stdout的输出与现有列表进行比较。那么stdout结果的排序是在什么基础上发生的,如果我比较它呢?

50pmv0ei

50pmv0ei1#

如果您引用的是像ls这样的命令,您可能会根据环境变量的设置获得不同的结果。
您可以根据是否为会话分配了终端来获得不同的环境。
使用Paramiko SSHClient.exec_command,并将get_pty参数的默认值设置为False,您应该会得到与使用相同的结果:

ssh user@host command

如果将get_pty设置为True,则会得到与使用相同的结果:

ssh -T user@host command

但是你不应该设置get_pty=True,因为当环境改变时,你的代码可能会中断。
相关问题与更多细节:

相关问题