2016-08-12 60 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,現在它可以正常工作。