利用Python實現對linux伺服器SSH遠端連線和系統操作的幾種方式

天府雲創發表於2018-02-26

在運維工作中,我們經常使用 ssh 工具遠端登陸主機來執行命令,對系統進行維護。在python的自動化運維中,要執行系統命令,最方便的還是藉助於 python 的 ssh 功能編寫日常指令碼,簡化工作。下面我們說下這個工具。

概述

  • 功能:實現同時對多臺linux伺服器通過ssh執行同一命令。

  • 技術基礎: python pexpect paramiko等模組,部支援windows。

  • 引數:

    • 固定引數pwd:遠端伺服器密碼,使用者名稱目前寫死是root,可自行修改。

    • 可選引數-c CMDS:要執行的命令,比如:"ls -l","cd /home/test && test.py&如果不選擇,會從當前目前的cmd.txt讀取。

    • 可選引數-s SERVERS:目標伺服器,比如192.168.1.100,最後一位數可以用-表示一個區間,分號用於分割不同的ip。如果不選擇,會從當前目前的ip.txt讀取。

【前期方案思路準備】

跟ssh效果一樣 那就python直接執行shell命令(若要在ssh登陸裡面(會話),那隻能用python呼叫shell指令碼)

目前python還沒有直接去操作linux的模組  需要登陸然後執行命令的 ssh、parameko和pexpect模組是同一個型別的

目前開源的用python寫的批量管理linux伺服器的工具有ansible或者saltstack等類似的

若以上功能還不滿足需求等你python學到家了 你就自己寫個模組 自己呼叫就可以定製作開發了

【系統環境準備】

試驗系統型別:centos/Ubuntu,其他機器型別可以作參考

1). Linux系統首先要開啟SSH服務:service ssh status

如果沒安裝的話,則要:apt-get install openssh-server

service ssh restart

2).python最好選用2.7.x或者3.4.*或者3.6.*版本,然後使用pip安裝相應的第三方模組/庫 

pip install paramiko

pip install pexpect

pip install pycrypto

以centos7為例先安裝必須的模組

# yum install python-dev

# yum install python-devel

# pip install pycrypto

# pip install paramiko

# pip install ssh

用python SSH模組登入,並在遠端機執行shell命令

3).三種方案的簡單介紹

  • Python直接呼叫SSH模組
  • 利用paramiko模組實現登陸操作
  • Python中 pexpect 模組的pxssh 類(它用於處理一些自動化的需求,比如ssh和ftp

更多指令碼參考:https://www.cnblogs.com/kex1n/p/5988820.html

python實現ssh及sftp功能 - 愛笑的程式設計師  https://www.cnblogs.com/fang123456/p/7235688.html

Python SSH 的遠端連線並執行命令和下載檔案 -http://blog.csdn.net/syshzbtt/article/details/78069879

使用python遠端操作linux伺服器  http://blog.csdn.net/u010781856/article/details/47018413

用python SSH模組登入,並在遠端機執行shell命令 http://blog.csdn.net/mingzznet/article/details/52912118

技術|用Python來SSH連線到你的機器 https://linux.cn/article-2090-1.html

參考資料

相關文章