我試圖在Python中檢索遠程Linux服務器的環境變量。或者,如果我可以在我正在執行的命令中使用變量名稱,那也會很好。我所做的電話應該工作,據我所知,但我回來了垃圾。我已經建立了公鑰認證,所以不需要密碼。如何從Python遠程系統中檢索環境變量?
努力1:
devdir = subprocess.check_output(["ssh", connectstring, "echo $DEVDIR"])
努力2:
ret = subprocess.check_output(["ssh", connectstring,
"$DEVDIR/{0}".format(testpath)])
connectstring
是用戶@ ip和工作正常。 $DEVDIR
是我想要使用的遠程變量幷包含一個路徑。 testpath
是我試圖執行的腳本的路徑,根源於$DEVDIR
。
Effort 1返回「\ n」,Effort 2無法遠程解析$ DEVDIR。
努力3:
import paramiko
...
ssh = paramiko.SSHClient()
ssh.connect(ip, user) # succeeds
stdin, stdout, stderr = ssh.exec_command("echo $DEVDIR")
結果:stdout.readlines()= 「\ n」 個
你確定'$ DEVDIR'設置正確嗎?如果它手動登錄,但在執行遠程命令時失敗,我懷疑它只在登錄會話中設置... – glglgl 2013-04-24 16:42:55
@glglgl,也就是它 - $ DEVDIR由.bashrc設置。我會嘗試導出.profile中的變量。 – TravisThomas 2013-04-24 16:46:20
我嘗試導出.profile沒有運氣。我也嘗試執行'ssh.exec_command(「source〜/ .bashrc」)'',接着執行'ssh.exec_command(「echo $ DEVDIR」)'命令並得到相同的結果。 – TravisThomas 2013-04-24 16:51:04