python使用paramiko模組ssh連線遠端主機,環境變數問題
阿新 • • 發佈:2018-12-21
有個需求需要在一臺機器上通過非手動登入的方式在另一臺機器上執行命令,於是我找到了Python的paramiko模組,SSHclient可以滿足要求執行命令。過了一陣子測試發現有的命令執行不了,錯誤提示是:command not found,但是在目標機器上可以執行,無語啊。。。驗證了一下測試的說法,懷疑是環境變數的問題,但是還是不懂該怎麼設定,上百度搜索一波,找了幾個相同問題的部落格,但是他們的解決方法試過了本地都不行,期間發現一個說明shell模式的部落格,講的很細緻,有一個關鍵點——通過SSH執行命令指令碼時在指令碼的第一行加上註釋#!/bin/bash --login 這樣就能解決環境變數的問題,我驗證了一下的確可行,但是我不想改當前的程式碼,把執行的命令全部封裝成檔案,心好累。繼續搜尋,後來在Google上搜索了一下paramilko command not found,終於在Stack Overflow上找到了答案
stdin, stdout, stderr = ssh.exec_command("bash -lc 'echo $PATH'")
bash -lc
的外殼,在測試那邊通過了驗證,嘿嘿。