使用Paramiko實現SSH登陸,文件上傳下載

1,SSh登陸命令行實現:

#!/usr/bin/env python
# encoding: utf-8
import paramiko

private_key_path = '/Users/aolens/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.201', 22,username='root',pkey=key)
#ssh.connect('192.168.1.201', 22,'root','aolens') #不採用×××登陸時
flag = True
while flag:
    con = raw_input('輸入要執行的命令: ')
    if con == 'quit':
        flag = False
        ssh.close()
    else:
        stdin, stdout, stderr = ssh.exec_command(con)
        print stdout.read()
 
2,實現文件上傳下載
t = paramiko.Transport(('192.168.1.201',22))
t.connect(username='root',password='qixiang123')
sftp = paramiko.SFTPClient.from_transport(t)
#sftp.put('/Users/aolens/Downloads/1.sh','/root/1.sh')   #put上傳文件到服務器,前邊是上傳文件地址,後邊是上傳後文件地址
sftp.get('/root/1.sh','/Users/aolens/Downloads/2.sh')    #get下載文件,前邊是下載地址,後邊是下載後存放地址
t.close()

結合SSH登陸,優化文件上傳下載

#!/usr/bin/env python
# encoding: utf-8

import paramiko

private_key_path = '/Users/aolens/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)

t = paramiko.Transport(('192.168.1.201',22))
t.connect(username='root',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
flag = True
while flag:
    con = raw_input('輸入要執行的命令: ')
    if con == 'quit':
        flag = False
        t.close()
    elif con == 'put':
        com_add = raw_input('輸入文件來源地址:')
        target_add = raw_input('輸入文件存放地址:')
        sftp.put(com_add,target_add)
        print '上傳完成[=========================] 100%  ', "文件上傳至:%s"% (target_add)
    elif con == 'get':
        com_add = raw_input('輸入文件來源地址:')
        target_add = raw_input('輸入文件存放地址:')
        sftp.get(com_add,target_add)
        print '下載完成[=========================] 100%  ', "文件存放在:%s"% (target_add)

    else:
        print '輸入正確的上傳下載指令'
        print '上傳: put '
        print '下載: get '
        print '========================='
對上邊SSH登陸優化,輸出信息
#!/usr/bin/env python
# encoding: utf-8
import paramiko

private_key_path = '/Users/aolens/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.201', 22,username='root',pkey=key)
#ssh.connect('192.168.1.201', 22,'root','aolens') #不採用×××登陸時
flag = True
while flag:
    con = raw_input('\033[1;34m輸入要執行的命令: \033[0m')
    if con == 'quit':
        flag = False
        ssh.close()
    else:
        stdin, stdout, stderr = ssh.exec_command(con)
	    for i in (stdout.read(),stderr.read()):
		    print i


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