Python3子进程在旧的shell-sftp问题中执行命令

时间:2016-08-12 09:59:14

标签: python linux shell

我正在尝试创建某种sftp服务器的ping,并在连接失败时报告python3。

我尝试执行的命令就是这个:

sftp -P port user@host <<< exit > /dev/null 2>&1

当我在arch上使用我的所有shell(sh 4.3,bash,zsh)在本地执行它时,它工作在我在subprocess.check_call([command],shell = True)中执行它时(也在我的计算机上)但它不能在服务器上运行,因为check_call使用/ bin / sh,并且安装的版本不允许重定向,如&#34;&lt;&lt;&lt;出口&#34;

我收到此错误:/ bin / sh:1:语法错误:重定向意外

我真的需要&#34;退出&#34;一旦连接到sftp以自动关闭连接,关键字就会传递给进程。为此,我需要找到正确的命令传递给旧的/ bin / sh或tell子进程使用/ bin / bash而不是/ bin / sh。

有人知道如何解决这个问题吗?

服务器3.16.0-60-通用#80~14.04.1-Ubuntu

非常感谢。

1 个答案:

答案 0 :(得分:0)

/ bin / sh实际上已重定向到/ bin / dash。我将其更改为/ bin / bash,现在可以正常工作。