2013-07-29 31 views
10

我正在遠程服務器上安裝證書,並且希望在覆蓋它們之前檢查它們是否存在。服務器只允許通過ssh公鑰進行非root用戶訪問。我可以sudo -s在一個shell中創建一次。 Root是必需的,因爲/ etc/ssl不能被其他人讀取。這正在開發python fabric,所以任何命令可以在shell命令中通過sudo運行。在這種情況下,我不介意在提示符處輸入密碼。測試Python/Bash上的SSH/Sudo中是否存在文件/目錄

TL; DR:我需要一個sh命令,可以告訴我的Python程序時是否作爲if fabric.sudo(sh_command) == True:(或類似的東西)運行一個遠程文件(或目錄)存在。

謝謝!

回答

35
from fabric.contrib.files import exists 

def foo(): 
    if exists('/path/to/remote/file', use_sudo=True): 
     #command 
+0

文檔鏈接:http://docs.fabfile.org/en/latest/api/contrib/ files.html?突顯=#存在fabric.contrib.files.exists – ecstaticpeon

0

在Linux中運行一個類似test的命令來確定目錄是否存在。 fabric.sudo的輸出是一個多行字符串,可以解析返回狀態。

1

也許不是最簡單的方法,但是從我的頭,我建議

ssh [email protected] 'bash -c "if [ -e /path/to/remote/file ] ; then true ; fi"' 
相關問題