最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python代碼調(diào)用執(zhí)行shell踩坑解決

 更新時(shí)間:2023年06月12日 09:00:51   作者:大話性能  
這篇文章主要為大家介紹了Python代碼調(diào)用執(zhí)行shell,踩過的坑解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

在老家 2 天,花了點(diǎn)時(shí)間,折騰了下 python 代碼,之前一直遇到個(gè)偶現(xiàn)點(diǎn)問題,這兩天總算解決了。

問題的核心是,你知道怎么正確用 python 代碼調(diào)用 linux 上的 shell 命令。

這里回涉及 2 個(gè)問題。

  • 1、如何執(zhí)行本機(jī)上的 linux 命令?
  • 2、如何執(zhí)行遠(yuǎn)程機(jī)器上的 linux 命令?

問題一:

可以執(zhí)行本機(jī) shell 命令的相關(guān) python 模塊和函數(shù)有好幾個(gè),不過有一些已經(jīng)被廢棄或移除。

subprocess 模塊用于創(chuàng)建子進(jìn)程, 這個(gè)模塊用于替換舊版本中的一些模塊, 如:os.system, 

    os.spawn*, os.popen*, os.popen*, popen2., commands., subprocess 允許你能創(chuàng)建很多子進(jìn)程, 創(chuàng)建的時(shí)候能能指定子進(jìn)程和子進(jìn)程的輸入、輸出、錯(cuò)誤輸出管道, 執(zhí)行后能獲取輸出結(jié)果和執(zhí)行狀態(tài)。

在 python3.5 之后的版本中, 官方文檔中提倡通過 subprocess.run() 函數(shù)替代其他函數(shù)來使用 subprocess 模塊的功能。

測試:自己寫了個(gè)簡單的 demo,驗(yàn)證了 subprocess 調(diào)用 run 函數(shù)執(zhí)行 linux 命令的時(shí)候是阻塞的,一直會(huì)等到命令執(zhí)行完,再往下走。
另外,可以根據(jù)結(jié)果的 returncode 碼,進(jìn)行判斷,linux 命令有沒有執(zhí)行成功。

問題二:

關(guān)于 python 遠(yuǎn)程執(zhí)行 Linux,用的最多的還是 paramiko 模塊,我之前也是用了這個(gè)模塊,但是踩坑了。

核心主要代碼

sshclient = paramiko.SSHClient()
        sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshclient.connect(ip, int(port), user, pwd, timeout=60)

check_in, check_out, check_err = sshclient.exec_command(self.check_slave_cmd)

坑就是,exec_command 函數(shù)是非阻塞的,不管命令有沒有執(zhí)行成功,python 代碼就往下走了。所以,有時(shí)候回出現(xiàn)偶像的 bug,因?yàn)槿Q于命令執(zhí)行的快慢和網(wǎng)速,譬如,假設(shè)你執(zhí)行的 shell 命令耗時(shí)比較久,而代碼已經(jīng)執(zhí)行到下面,發(fā)現(xiàn)沒有你 shell 命令的結(jié)果就報(bào)錯(cuò)了。

解決方法

檢測一下該 shell 命令的執(zhí)行狀態(tài)。調(diào)用 recv_exit_status(),該函數(shù)回一直阻塞中,直到 shell 命令結(jié)束,一般正常接受的 status 是 0.。
所以,當(dāng)你要用到這個(gè) paramiko 模塊執(zhí)行遠(yuǎn)程機(jī)器的 shell 命令的話,要多個(gè)心眼,保證 shell 命令有沒有執(zhí)行完成,會(huì)不會(huì)影響你的代碼。

以上就是Python 代碼調(diào)用執(zhí)行 shell,踩過的坑的詳細(xì)內(nèi)容,更多關(guān)于Python調(diào)用執(zhí)行shell踩坑的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

永吉县| 海盐县| 云林县| 蓝田县| 中方县| 彰化市| 奉新县| 龙州县| 麦盖提县| 鄂托克前旗| 长宁区| 贡觉县| 六盘水市| 北流市| 石棉县| 仁寿县| 河池市| 琼海市| 黑龙江省| 达拉特旗| 南陵县| 穆棱市| 城市| 花莲市| 南漳县| 扬中市| 连山| 盈江县| 麻城市| 方正县| 仁化县| 阿拉善左旗| 康马县| 庆云县| 江孜县| 常州市| 芦山县| 扎囊县| 谢通门县| 上饶县| 南投县|