Python paramiko模塊(實現ssh)

開發堡壘機以前,先來學習Python的paramiko模塊,該模塊基於SSH用於鏈接遠程服務器並執行相關操做python

安裝paramiko模塊bash

pip3 install paramiko

基於用戶密碼方式服務器

import paramiko

# 建立SSH對象
ssh = paramiko.SSHClient()
# 容許鏈接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 鏈接服務器
ssh.connect(hostname="10.0.0.200", port=22, username='root', password='1')

# 執行命令
# stdin:標準輸入(就是你輸入的命令);stdout:標準輸出(就是命令執行結果);stderr:標準錯誤(命令執行過程當中若是出錯了就把錯誤打到這裏),stdout和stderr僅會輸出一個
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
result = (stdout.read().decode('utf-8'))   # 這個有問題,若是執行的命令是錯誤的,會不顯示錯誤,能夠修改一下,先判斷stdout有沒有值,若是輸出沒有,就顯示錯誤
print(result)
# 關閉鏈接
ssh.close()

基於公鑰密鑰鏈接ssh

import paramiko

# 指定私鑰路徑
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')

# 建立SSH對象
ssh = paramiko.SSHClient()
# 容許鏈接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 鏈接服務器
ssh.connect(hostname='10.0.0.171', port=22, username='root', pkey=private_key)

# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
result = stdout.read()
print(result.decode())
# 關閉鏈接
ssh.close()
相關文章
相關標籤/搜索