模塊:paramiko
簡介:可以實現遠程連接服務器,以賬號密碼遠程,以密鑰遠程,也可以實現遠程傳輸文件
#實現遠程登錄paramiko模塊
#ssh賬號密碼遠程連接
#-*-coding:utf-8 -*-
def ssh_paramiko():
import paramiko
hostname = '192.168.3.2'
port = 22
username = 'root'
password = ''
paramiko.util.log_to_file('syslogin.log') #保存日誌
ssh = paramiko.SSHClient() #創建連接對象
ssh.load_system_host_keys() #獲取客戶端host_key,默認爲“~/.ssh/known_hosts”
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #自動添加已知hosts
ssh.connect(hostname=hostname,port=port,username=username,password=password) #創建ssh連接
stdin,stdout,stderr=ssh.exec_command('free -m') #執行遠程命令
print(stdout.read().decode('utf-8')) #打印命令執行結果
ssh.close() #關閉ssh連接
#ssh_paramiko()
#實現ssh密鑰登錄
def key_ssh():
import paramiko
key = paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa") #定義公鑰文件位置
hostname="" #定義遠程主機
prot="" #定義遠程端口
username=""
command=""
ssh = paramiko.SSHClient()
ssh.set_missing_host_key__policy(paramiko.AutoAddpolicy()) #設置遠程主機沒有本地主機密鑰或hostkey時的策略“AutoAddpolicy”爲自動添加
ssh.connect(hostname=hostname,port=int(port),username=username,pkey=key)
stdin,stdout,stder = ssh.exec_command(command)
print(stdout.read().decode('utf-8'))
#key_ssh()
#實現SFTP上傳文件和下載文件
def sftp():
import paramiko
username = "root"
password = ""
hostname = "192.168.3.2"
port = "22"
try:
t = paramiko.Transport((hostname,int(port)))
t.connect(username=username,password=password) #創建一個
sftp = paramiko.SFTPClient.from_ransport(t) #創建一個連接對象
sftp.put("/hello.txt","/date/hello.txt") #上傳文件到服務端
sftp.get("/date/hello.txt","/hello1.txt") #下載文件到本地
sftp.mkdir("/python") #在服務器端創建文件夾
sftp.rmdir("/python") #刪除遠程主機的目錄
sftp.rename("/hello.txt","/hello2.txt") #修改遠程主機文件名稱
print(sftp.state("/date/hello.txt")) #打印文件信息
print(sftp.listdir("/date")) #打印目錄列表
t.close() #關閉連接
except Exception as e:
print(str(e))