python之 paramiko模組 連線伺服器
阿新 • • 發佈:2020-10-22
paramiko是一個基於SSH用於連線遠端伺服器並執行相關操作(SSHClient和SFTPClinet,即一個是遠端連線,一個是上傳下載服務),使用該模組可以對遠端伺服器進行命令或檔案操作。
下載安裝
pycrypto,由於 paramiko 模組內部依賴pycrypto,所以先下載安裝pycrypto
pip3 install pycrypto
pip3 install paramiko
1.賬號密碼連線
@staticmethod def get_data(): list_ = list() try: ssh_client = paramiko.SSHClient() ssh_client.load_system_host_keys() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_client.connect("192.168.xx.xx", 22, 'root', 'admin') # 在command命令最後加上 get_pty=True,執行多條命令 的話用;隔開,另外所有命令都在一個大的單引號範圍內引用 std_in, std_out, std_err = ssh_client.exec_command( 'oc login https://api.ocp4.gzky.com:6443 --username=admin --password=redhat &> /dev/null && ' 'tk=$(oc sa get-token prometheus-k8s -n openshift-monitoring) && ' 'curl -H "Authorization: Bearer $tk" https://192.168.xx.xx:xxxx/metrics -k', get_pty=True) for line in std_out: list_.append(line.strip("\n")) except Exception as e: logging.error('class path: %s;function name: %s;error message:%s' % (__name__, sys._getframe().f_code.co_name, e.message), exc_info=True) return list_
2.公鑰祕鑰連線
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') # 建立SSH物件 ssh = paramiko.SSHClient() # 允許連線不在know_hosts檔案中的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 連線伺服器 ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', key=private_key) # 執行命令 stdin, stdout, stderr = ssh.exec_command('df') # 獲取命令結果 result = stdout.read() # 關閉連線 ssh.close()