python實戰之paramiko模組

2021-09-07 03:10:22 字數 3308 閱讀 8206

目錄

paramiko是用python語言寫的乙個模組,遵循ssh2協議,支援以加密和認證的方式,進行遠端伺服器的連線。

由於使用的是python這樣的能夠跨平台執行的語言,所以所有python支援的平台,如linux, solaris, bsd, macos x, windows等,paramiko都可以支援,因此,如果需要使用ssh從乙個平台連線到另外乙個平台,進行一系列的操作時,paramiko是最佳工具之一。

1:用telnet

2:用putty

3:用winscp

4:用xmanager等…

1:linux上安裝ftp並配置

2:linux上安裝sambe並配置…

大家會發現,常見的解決方法都會需要對遠端伺服器必要的配置,如果遠端伺服器只有一兩台還好說,如果有n臺,還需要逐台進行配置,或者需要使用**進行以上操作時,上面的辦法就不太方便了。

使用paramiko可以很好的解決以上問題,比起前面的方法,它僅需要在本地上安裝相應的軟體(python以及pycrypto),對遠端伺服器沒有配置要求,對於連線多台伺服器,進行複雜的連線操作特別有幫助。

ssh.py #相當於 ssh簡單連線操作原理

__author__ = "burgess zheng"

import paramiko

# 建立ssh物件

ssh = paramiko.sshclient()

# 允許連線不在know_hosts檔案中的主機#如:ssh rsa加密連線原理

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())

# 連線伺服器

ssh.connect(hostname='10.0.0.150', port=52113, username='root', password='123456')

# 執行命令

stdin, stdout, stderr = ssh.exec_command('df')#linux命令返回3個值

# 執行ssh.exec_command('df') 該命令會返回3個值

#stdin:標準輸入 stdout:標準輸出 stderr:標準錯誤

res,err = stdout.read(),stderr.read()

#stdoutread():讀標準輸出的結果 stderr.read()讀標準錯誤的結果

#把讀出的結果分別賦值給res和err

result = res if res else err

#三元運算 如果res有值result = res 如果res沒值就 result = err

print(result.decode())

# 關閉連線

ssh.close()

ssh_sft.py  #相當於 ssh的scp傳檔案原理

__author__ = "burgess zheng"

import paramiko

transport = paramiko.transport(('10.0.0.31', 52113))

transport.connect(username='root', password='123456')

#上面的只做連線

sftp = paramiko.sftpclient.from_transport(transport)

#sftp.put('筆記', '/tmp/test_from_win')

#將location.py 上傳至伺服器 /tmp/test.py

sftp.get('/root/oldgirl.txt', 'fromlinux.txt')

transport.close()

ssh rsaa  #python基於金鑰的連線(和ssh基於金鑰連線一樣的)

__author__ = "burgess zheng"

#基於秘鑰連線

import paramiko

private_key = paramiko.rsakey.from_private_key_file('id_rsa31.txt')

#指定你的私鑰的位置

# 建立ssh物件

ssh = paramiko.sshclient()

# 允許連線不在know_hosts檔案中的主機

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())

# 連線伺服器

ssh.connect(hostname='10.0.0.41', port=52113, username='gongli', pkey=private_key)

# 執行命令

stdin, stdout, stderr = ssh.exec_command('df')

result = stdout.read()

print(result.decode())

stdin, stdout2, stderr = ssh.exec_command('ifconfig')#兩條命令可以當做一條命令使用(''df;ifconfg)

# 獲取命令結果

result2 = stdout2.read()

print(result2.decode())

# 關閉連線

ssh.close()

import paramiko

private_key = paramiko.rsakey.from_private_key_file('/home/auto/.ssh/id_rsa')

transport = paramiko.transport(('hostname', 22))

transport.connect(username='wupeiqi', pkey=private_key )

sftp = paramiko.sftpclient.from_transport(transport)

# 將location.py 上傳至伺服器 /tmp/test.py

sftp.put('/tmp/location.py', '/tmp/test.py')

sftp.get('remove_path', 'local_path')

transport.close()

Python實戰之pymysql模組實戰

安裝 pip3 install pymysql author burgess zheng usr bin env python coding utf 8 import pymysql 建立連線 conn pymysql.connect host 10.0.0.150 port 3306,user p...

Python之基礎實戰專案

後言我們在之前的學習內容中就可以大概的了解了python的乙個基礎用法。所以在之前的python 一 python 二 python 三 的基礎上我們就對其進行乙個整合。let go,展開。students def selstu 查詢所有 return for stu in students pri...

Python之隨機森林實戰

實現 1 coding utf 8 2 3created on tue sep 4 09 38 57 201845 author zhen 6 78 from sklearn.ensemble import randomforestclassifier 9from sklearn.model sel...