Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Linux终端命令中添加退格?_Python_Linux_Ssh - Fatal编程技术网

Python 如何在Linux终端命令中添加退格?

Python 如何在Linux终端命令中添加退格?,python,linux,ssh,Python,Linux,Ssh,我需要执行以下命令,将ssh连接到网络上已保存凭据的设备中 ans = subprocess.check_output(['sudo','sshpass','-p',iplist[index][3],'ssh',iplist[index][2],'@',iplist[index][2]]) 这是在Python环境中的Ubuntu上执行的。 我想实际执行- sudo sshpass -p password username@hostname 很可能在“@”之前和之后都有一个空格。 如何消除这种

我需要执行以下命令,将ssh连接到网络上已保存凭据的设备中

ans = subprocess.check_output(['sudo','sshpass','-p',iplist[index][3],'ssh',iplist[index][2],'@',iplist[index][2]])
这是在Python环境中的Ubuntu上执行的。 我想实际执行-

sudo sshpass -p password username@hostname
很可能在“@”之前和之后都有一个空格。
如何消除这种情况?

将它们连接到一个参数

ans = subprocess.check_output(['sudo', 'sshpass', '-p', iplist[index][3], 'ssh', iplist[index][2] + '@' + iplist[index][2]])

您需要将
iplist[index][2]、'@',iplist[index][2]
合并到列表中的一个项目中:

ans = subprocess.check_output(['sudo','sshpass','-p', iplist[index][3],'ssh','{}@{}'.format(iplist[index][2], iplist[index][2])])

与其说有空格,还不如说它们是作为两个单独的参数显式传递的:UNIX上的参数列表(以及该操作系统上所有编程语言的参数列表)实际上是一个单独的C字符串列表;当您将一个带空格的字符串传递给shell时,shell会在开始调用程序之前将其拆分为各个字符串。将数组传递给
subprocess.Popen()
,您将自己形成该列表,而不是生成一个字符串并将其拆分到其他位置,从而获得更多的控制权。