當前位置:首頁 » 文件管理 » paramiko上傳文件

paramiko上傳文件

發布時間: 2022-06-03 22:33:43

1. python中paramiko模塊 sftp上傳後文件內容每行都是^M結尾,請教怎麼解決

^M好像是回車的意思。
如果你這個是文本文件,那你用replace函數先把^M這個字元替換成空格,然後在strip一下就沒了。

2. 如何進行伺服器的批量管理以及python 的paramiko的模塊

最近對公司的通道機賬號進行改造管理,全面的更加深入的理解了公司賬號管理的架構。(註:基本上所有的機器上的ssh不能使用,只有部分機器能夠使用。為了安全的角度考慮,安裝的不是公版的ssh,而都是定製版的ssh,(限制了機器上的源IP地址即可))。

自動化管理伺服器,有兩種方法:

第一種方法,是我們公司自己開發的(伺服器大概是3W台),基本上伺服器之間不能夠通過ssh互相連通,只能是一台伺服器能夠連到所有的伺服器上,這台伺服器我們稱之為通道機(也叫堡壘機),當我們想登某台伺服器的時候,需要先登上這台通道機,然後經過一系列的驗證之後,就能自動的登上你要登到的伺服器上。

並且我們自己開發了一套叫做通道機API的方式,來管理3W台伺服器,比如收集各台伺服器的信息等。其這個API的本質就是使用的是POST的方式將命令post到目標機上,然後返回結果進行處理即可。這是一個大概的思想。

第二種方法,就是使用ssh的協議進行管理,使用python的paramiko來進行管理,下面會進行介紹:

有一些想法,可以使用python的paramiko模塊來進行管理名下伺服器,前提是能夠ssh到各個伺服器上。

下面對這個paramiko的模塊做個簡單的介紹和分享:

1.簡介:

paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程伺服器的連接。

由於使用的是python這樣的能夠跨平台運行的語言,所以所有python支持的平台,如linux, Solaris, BSD, MacOS X,Windows等,paramiko都可以支持,因此,如果

需要使用SSH從一個平台連接到另外一個平台,進行一系列的操作時,paramiko是最佳工具之一。

舉個常見的例子,現有這樣的需求:需要使用windows客戶端,遠程連接到Linux伺服器,查看上面的日誌狀態,大家通常使用的方法會是:

1:用telnet

2:用PUTTY

3:用WinSCP

4:用XManager等…

那現在如果需求又增加一條,要從伺服器上下載文件,該怎麼辦?那常用的辦法可能會是:

1:Linux上安裝FTP並配置

2:Linux上安裝Sambe並配置…

大家會發現,常見的解決方法都會需要對遠程伺服器必要的配置,如果遠程伺服器只有一兩台還好說,如果有N台,還需要逐台進行配置,或者需要使用代碼進行以上操作

時,上面的辦法就不太方便了。

使用paramiko可以很好的解決以上問題,比起前面的方法,它僅需要在本地上安裝相應的軟體(python以及PyCrypto),對遠程伺服器沒有配置要求,對於連接多台服

務器,進行復雜的連接操作特別有幫助。

2.使用的幾個簡單的案例:

下面是兩種使用paramiko連接到linux伺服器的代碼:

方式一:

1 ssh = paramiko.SSHClient()2 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())3 ssh.connect("IP地址",22,"用戶名","密碼")

上面的第二行代碼的作用是允許連接不在know_hosts文件中的主機。

方式二:

1 t = paramiko.Transport(("IP地址","埠"))2 t.connect(username = 「用戶名」, password = 「口令」)3 如果連接遠程主機需要提供密鑰,上面第二行代碼可改成:4 t.connect(username = 「用戶名」, password = 「口令」, hostkey=」密鑰」)

3.一些簡單的例子:

如果linux伺服器開放了22埠,在windows端,我們可以使用paramiko遠程連接到該伺服器,並執行任意命令,然後通過 print或其它方式得到該結果。

3. python遠程操作windows伺服器有什麼方案

可以使用python+paramiko。 paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程伺服器的連接。 使用paramiko可以很好的解決以下問題: 需要使用windows客戶端, 遠程連接到Linux伺服器,查看上面的日誌狀態,批量配置遠程伺服器,文件上傳,文件下載等 具體可以參考: http://www.paramiko.org/

4. python 實現ssh的執行遠端命令和scp的不同機器文件傳輸功能

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password: ')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ssh.close()
ret = -2
return ret

利用pexpect模塊我們可以做很多事情,由於他提供了自動交互功能,因此我們可以實現ftp,telnet,ssh,scp等的自動登錄,還是比較實用的。根據上面的代碼相信讀者已經知道怎麼實現了(python就是那麼簡單!)。

上面的代碼去完成任務還是比較費時間的,因為程序要等待自動交互出現,另外ubuntu用ssh連接就是比較慢,要進行一系列的驗證,這樣才體現出ssh
的安全。我們要提高效率,在最短的時間內完成。後來我發現了python裡面的paramiko模塊,用這個實現ssh登錄更加簡單。看下面的代碼:

復制代碼 代碼如下:

#-*- coding: utf-8 -*-
#!/usr/bin/python
import paramiko
import threading
def ssh2(ip,username,passwd,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
# stdin.write("Y") #簡單交互,輸入 『Y'
out = stdout.readlines()
#屏幕輸出
for o in out:
print o,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['cal','echo hello!']#你要執行的命令列表
username = "" #用戶名
passwd = "" #密碼
threads = [] #多線程
print "Begin......"
for i in range(1,254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
a.start()

上面的程序還是有些技巧的:
1.
利用多線程,同時發出登錄請求,同時去連接電腦,這樣速度快很多,我試了一下,如果不用多線程,直接一個一個挨著執行的話,大約5~10秒鍾才能對一台電
腦操作完,具體時間要根據命令的來決定,如果是軟體安裝或者卸載時間要更長一些。這樣下來怎麼也要一二十分鍾,用多線程後就快多了,所有的命令執行完用了
不到2分鍾!
2.最好用root用戶登錄,因為安裝或者卸載軟體的時候如果用普通用戶又會提示輸入密碼,這樣又多了一次交互,處理起來就比較麻
煩!安裝軟體時apt-get install xxx
最好加上「-y」參數,因為有時安裝或刪除軟體時提示是否繼續安裝或卸載,這又是一次自動交互!加上那個參數後就沒有人機交互了。
3. 循環時循環所有ip,因為計算機的ip是路由器自動分配的,保險起見,最好全部都執行,保證沒有遺漏的主機
4.遠端執行命令時如果有交互,可以這樣用 stdin.write("Y")來完成交互,「Y」就是輸入「Y」。
5.把所有的命令放到一個列表裡面,遍歷列表可以依次執行列表裡面的命令
6.為了更好的進行控制,最好在電腦上提前把root用戶打開,裝好ssh伺服器並讓其開機自動執行。

5. python 使用paramiko模塊ssh遠程linux伺服器,linux伺服器已經使用公鑰認證免密碼登陸,請問怎麼寫。

實例1:
#!/usr/bin/python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("172.16.1.3",22,"root","333333")
stdin, stdout, stderr = ssh.exec_command("df -h")
print stdout.readlines()
ssh.close()

實例2:
#!/usr/bin/python
import paramiko
t = paramiko.Transport(("172.16.1.2",322))
t.connect(username = "root", password = "222222")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='/opt/test.txt'
localpath='/opt/test.txt'
sftp.put(localpath,remotepath)
#sftp.get(remotepath, localpath)
t.close()

熱點內容
聊天軟體編程 發布:2024-09-17 03:00:07 瀏覽:725
linuxoracle安裝路徑 發布:2024-09-17 01:57:29 瀏覽:688
兩個安卓手機照片怎麼同步 發布:2024-09-17 01:51:53 瀏覽:207
cf編譯後沒有黑框跳出來 發布:2024-09-17 01:46:54 瀏覽:249
安卓怎麼禁用應用讀取列表 發布:2024-09-17 01:46:45 瀏覽:524
win10設密碼在哪裡 發布:2024-09-17 01:33:32 瀏覽:662
情逢敵手迅雷下載ftp 發布:2024-09-17 01:32:35 瀏覽:337
安卓如何讓軟體按照步驟自動運行 發布:2024-09-17 01:28:27 瀏覽:197
Z包解壓命令 發布:2024-09-17 01:27:51 瀏覽:221
吉林ipfs存儲伺服器雲主機 發布:2024-09-17 01:27:38 瀏覽:685