2016-08-12 30 views
0

我想创建某种sftp服务器的ping,并在连接失败时报告python3。Python3子进程在旧shell中执行命令 - sftp问题

,我想执行的命令是这样的一个:

sftp -P port [email protected] <<<exit> /dev/null 2>&1 

它,当我用我所有的外壳在本地执行它的工作原理(SH 4.3时,bash,zsh中)上拱,当我执行工作它在subprocess.check_call([command],shell = True)中(也在我的计算机上),但它在服务器上不起作用,因为check_call使用/ bin/sh,并且安装的版本不允许重定向,如“< < <退出“。

我得到这个错误:/ bin/sh的:1:语法错误:重定向意外

我真的需要传递到过程中的“退出”的关键字,一旦它被连接到SFTP自动关闭连接。为此,我需要找到正确的命令传递给旧的/ bin/sh或告诉子进程使用/ bin/bash而不是/ bin/sh。

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

服务器3.16.0-60泛型#80〜14.04.1 Ubuntu的

非常感谢你。

回答

0

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