第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

文件相關(guān)操作python子進(jìn)程vs.原生python

文件相關(guān)操作python子進(jìn)程vs.原生python

慕田峪9158850 2022-06-28 10:12:29
我想通過 ssh 執(zhí)行一個(gè)簡(jiǎn)單的任務(wù):返回給定文件列表中不存在的所有文件。我這樣做的方法是將以下內(nèi)容包裝在 ssh 會(huì)話中:for f in $(files); do stat $f > /dev/null ;donestdout 重定向?qū)⒑雎运泻玫奈募?,然后讀取 stderr 將為我提供所有未找到文件的列表。我首先想到將這個(gè) bash 代碼與 a 中的 ssh 部分一起使用,subprocess.run(..., shell=True)但不鼓勵(lì)這樣做。相反,paramiko有人建議。我試圖理解為什么以及何時(shí)原生 python 比子處理 bash 更好不同操作系統(tǒng)的可計(jì)算性(對(duì)我來說不是問題,因?yàn)榇a與 Ubuntu 緊密相關(guān))錯(cuò)誤和異常處理 - 我確實(shí)得到并認(rèn)為它很重要,盡管從子進(jìn)程中捕獲異常或退出代碼也很容易在我看來,原生 python 的缺點(diǎn)是當(dāng) bash 的 ssh 和 stat 在我看來更加簡(jiǎn)單易用時(shí),需要涉及一些復(fù)雜的模塊,例如 paramiko是否有關(guān)于何時(shí)以及如何選擇 bash 而不是 python 的指南?這個(gè)問題主要是關(guān)于在 ssh 上使用命令,但與 bash 以簡(jiǎn)單快捷的方式執(zhí)行的任何其他命令以及 python 換行有關(guān)
查看完整描述

1 回答

?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

這里實(shí)際上有三種選擇:在進(jìn)程中做某事(如paramiko)、ssh 直接運(yùn)行(使用subprocess)和ssh使用shell運(yùn)行(也使用subprocess)。作為一般規(guī)則,避免以編程方式運(yùn)行 shell(而不是根據(jù)交互式用戶請(qǐng)求)。

原因是它是一個(gè)以人為本的界面(因此很容易將單詞與空格、快捷鍵$HOME和通配符分開)作為 API 的功能大大不足。例如,考慮一下您的代碼如何檢測(cè)到ssh丟失的情況:這種情況不會(huì)出現(xiàn)paramiko(只要已安裝),很明顯subprocess,并且只是來自 shell 的(模棱兩可的)退出代碼和 stderr 消息。還要考慮如何提供要運(yùn)行的命令:它必須是適合 shell 的命令(由于 SSH 協(xié)議的限制),但如果ssh 使用shell 調(diào)用,則必須對(duì)其進(jìn)行編碼(有時(shí)稱為“雙重轉(zhuǎn)義”)以使本地 shell 的解釋成為遠(yuǎn)程 shell 所需的多字命令。

到目前為止,paramiko幾乎subprocess是等價(jià)的。作為一個(gè)更困難的情況,考慮密鑰驗(yàn)證失敗將如何表現(xiàn):paramiko將失敗描述data,而其他人將嘗試與用戶交互(可能存在也可能不存在)。 paramiko還支持在一個(gè)經(jīng)過身份驗(yàn)證的連接上打開多個(gè)通道;ssh這樣做也是如此,但只能通過ControlMaster涉及 Unix 套接字文件的復(fù)雜配置(在某些部署中可能沒有任何好地方存在)。說到配置,如果在設(shè)計(jì)時(shí)沒有考慮到這種自動(dòng)化用例,您可能需要通過-F以避免用戶的復(fù)雜性。.ssh/config

總之,庫是為像您這樣的用例而設(shè)計(jì)的,因此它們比從面向人類的命令組裝您自己的界面(盡管這種手動(dòng)組合非常有用)更好地工作也就不足為奇了,特別是對(duì)于邊緣情況可能!)。如果安裝一個(gè)非標(biāo)準(zhǔn)的依賴喜歡paramiko是一種負(fù)擔(dān),至少直接使用subprocess;去掉第二個(gè)殼已經(jīng)是很大的進(jìn)步了。


查看完整回答
反對(duì) 回復(fù) 2022-06-28
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)