2017-06-20 144 views
2

我需要执行以下命令ssh进入已保存凭据的网络上的设备。如何在Linux终端命令中添加退格?

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

这是在Python环境中的Ubuntu上执行的。 我想实际execute-

sudo sshpass -p password [email protected] 

这是很可能的,有一个空间之前和AFER“@”。 我该如何消除?

+1

这不是这么多,有一个空间,但认为他们是作为两个单独的参数显式传递:UNIX上的参数列表(以及在该OS上的所有编程语言中)实际上是一个单独的C字符串列表;当您将一个带空格的字符串传递给shell时,在启动被调用的程序之前,shell会将其分割成单独的字符串。将一个数组传递给'subprocess.Popen()',你自己形成了这个列表,而不是生成一个字符串并让它在其他地方分开 - 给你更多的控制权。 –

回答

5

它们串联到一个参数

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

谢谢!很棒! – Samanth

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])]) 
+1

谢谢!很棒! – Samanth