Python(自動化運維)之遠程操作Linux模塊

 模塊: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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章