python實現ssh自動化登入遇到的坑

2021-07-05 23:44:01 字數 935 閱讀 4120

最近用python寫了乙個自動登入ssh命令的小工具,在所有功能都實現後,後來發現了乙個小bug

就是登入之後的機器,在用vi或者是cat命令開啟檔案時發現會linux下螢幕只顯示一半左右的問題

用的是pexpect模組,**也是根據網上的例子改的,而且手動ssh的話也沒有這個問題

在用一上午的時間排除是其他原因導致的問題後,就去網上找了下pexpect的原始碼

根據pexpect先呼叫了spawn函式,然後發現螢幕只顯示了24行,。。。。linux下可用stty size檢視螢幕顯示的大小

看到原始碼後,發現

然後,就猜測可能跟這個有關係,然後在呼叫interact()函式之前就先呼叫一下setwinsize(row,column)函式,設定成自己想要的大小。。。。

然後再次登入用stty size就發現已更改生效。。。。

到這裡本該結束了。。。。。。。。但是實際上應該是根據自己的本地的設定來顯示,而不應該是固定大小。。。。。

然後又再次抱著摸索的精神,去查了下資料,發現python中有fcntl這個模組可以解決這個問題,在呼叫spawn之前先用fcntl.ioctl模組得到本地的環境中視窗的大小,儲存起來後面再呼叫setwinsize恢復。。:需要匯入termios,

fcntl包

s= struct.pack("hhhh",0,0,0,0)

a= struct.unpack('hhhh', fcntl.ioctl(sys.stdout.fileno(), termios.tiocgwinsz , s))

其中a中存放了螢幕的大小,我們只需要其前兩個引數即可。。。。在呼叫spawn函式之後再恢復即可:setwinsize(a[0],a[1])

這樣就能夠解決linux下終端只顯示一半的問題。。。。。。。。。

robotframework自動化系列 登陸操作

robotframework對於程式設計能力比較弱的測試人員而言,真的是雪中送炭!我們可以使用robotframework根據之前完成的測試用例,一步步完善自動化測試。在整個測試過程而言,最常見的就是登陸 新增 修改 刪除 查詢等操作,其他的操作都是在這個基礎上進行演練。這裡就先簡單說明一下登陸的操...

python實現自動化列印

這次真的是出於實際需要,想要用python寫個小指令碼 老闆發給我乙份包含幾百個人資訊的pdf檔案,如果乙份乙份開啟檔案,點列印我感覺要看到眼花。發現呼叫電腦程式需要用到win32這個庫,而且初略的看了下就發現此庫非常nb,怎麼說,這個庫可以同計算機進行互動,比如彈出提示框,或者呼叫系統內建一些程式...

Python實現網頁自動化朗讀

是不是有的時候懶得自己看新聞?那麼不妨試試用 python 來朗讀給你聽吧。網頁轉換成語音,步驟無外乎 網頁正文識別,獲取到正文的文字內容 文字轉語音,通過介面將文字轉換成語音檔案 語音檔案的發聲,即將語音檔案讀出 01 網頁正文識別 之所以用 python,就是因為 python 有著豐富的庫,網...