㈠ python 如何獲取SFTP上的文件創建時間,時間格式:%Y-%m-%d %H:%M:%S
python是當下十分火爆的編程語言,尤其在人工智慧應用方面。如果有心從事編程方向的工作,最好到專業機構深入學習、多實踐,更貼近市場,這樣更有利於將來的發展。python是當下十分火爆的編程語言,尤其在人工智慧應用方面。如果有心從事編程方向的工作,最好到專業機構深入學習、多實踐,更貼近市場,這樣更有利於將來的發展。python是當下十分火爆的編程語言,尤其在人工智慧應用方面。如果有心從事編程方向的工作,最好到專業機構深入學習、多實踐,更貼近市場,這樣更有利於將來的發展。
㈡ python的paramiko模塊 支持連接交換機嗎
paramiko使用
paramiko模塊是基於python實現了SSH2遠程安全連接,支持認證和密鑰方式,可以實現遠程連接、命令執行、文件傳輸、中間SSH代理功能
安裝
pip install paramiko
或 easy_install paramiko
paramiko依賴第三方的Crypto,Ecdsa和pyhton-devel,所以需要安裝
paramiko核心組件
SSHClient類
SSHClient類是SSH服務會話的高級表示,該類實現了傳輸、通道、以及SFTP的校驗、建立的方法
connect 方法
connect方法實現了遠程ssh連接並作校驗
hostname 連接的目標主機
port=SSH_PORT 指定埠
username=None 驗證的用戶名
password=None 驗證的用戶密碼
pkey=None 私鑰方式用於身份驗證
key_filename=None 一個文件名或文件列表,指定私鑰文件
timeout=None 可選的tcp連接超時時間
allow_agent=True, 是否允許連接到ssh代理,默認為True 允許
look_for_keys=True 是否在~/.ssh中搜索私鑰文件,默認為True 允許
compress=False, 是否打開壓縮
sock=None,
gss_auth=False,
gss_kex=False,
gss_deleg_creds=True,
gss_host=None,
banner_timeout=None
參數
exec_command方法
遠程執行命令的方法,該命令的輸入與輸出流為標准輸入、標出輸出、標准錯誤輸出
command 執行的命令
bufsize=-1 文件緩沖區大小
timeout=None
get_pty=False
參數
load_system_host_key方法
夾在本地公鑰文件,默認為~/.ssh/known_hosts
filename=None 指定本地公鑰文件
參數
set_missing_host_key_policy方法
設置連接的遠程主機沒有本地主機密鑰或HostKeys對象時的策略,目前支持三種:
用法:
set_missing_host_key_policy(paramiko.AutoAddPolicy())
AutoAddPolicy 自動添加主機名及主機密鑰到本地HostKeys對象,不依賴load_system_host_key的配置。即新建立ssh連接時不需要再輸入yes或no進行確認
WarningPolicy 用於記錄一個未知的主機密鑰的python警告。並接受,功能上和AutoAddPolicy類似,但是會提示是新連接
RejectPolicy 自動拒絕未知的主機名和密鑰,依賴load_system_host_key的配置。此為默認選項
SFTPClient類
SFTPCLient作為一個sftp的客戶端對象,根據ssh傳輸協議的sftp會話,實現遠程文件操作,如上傳、下載、許可權、狀態
from_transport(cls,t) 創建一個已連通的SFTP客戶端通道
put(localpath, remotepath, callback=None, confirm=True) 將本地文件上傳到伺服器 參數confirm:是否調用stat()方法檢查文件狀態,返回ls -l的結果
get(remotepath, localpath, callback=None) 從伺服器下載文件到本地
mkdir() 在伺服器上創建目錄
remove() 在伺服器上刪除目錄
rename() 在伺服器上重命名目錄
stat() 查看伺服器文件狀態
listdir() 列出伺服器目錄下的文件
遠程連接並執行命令
實現遠程連接主機,並執行命令,同時記錄日誌
* 直接驗證方式
㈢ 如何通過SFTP在python連接後列出目錄中的所有文件夾和文件
Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。
Python由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。
像Perl語言一樣, Python 源代碼同樣遵循 GPL(GNU General Public License)協議。
㈣ python,求助,伺服器走的sftp協議,怎麼獲取上面的文件
用paramiko模塊
importparamiko
defsftp_get(file):
CONST_HOST="1.1.1.1"
CONST_USERNAME="root"
CONST_PWD="password"
讓宏CONST_PORT=22
try:
t=paramiko.Transport((CONST_HOST,CONST_PORT))
t.connect(username=CONST_USERNAME,password=CONST_PWD)
sftp=paramiko.SFTPClient.from_transport(t)
兆臘des=os.getcwd()+'\test.txt'
#file為你要下載的文件,des為你保存該文件的路徑
sftp.get(file,des)
t.close()
族滑滑print'download%sto%sok'%(file,des)
returnTrue
exceptException,e:
raisee
㈤ 如何快速安裝OSSFTP工具阿里雲OSS FTP安裝圖文詳細教程
OSSFTP工具是一個特殊FTPserver,它接收普通FTP請求後,將對文件、文件夾的操作映射為對OSS的操作,從而使得您可以基於FTP協議來管理存儲在OSS上的文件。
注意生產環境請使用osssdk,OSSFTP工具主要面向個人用戶使用。
主要特性
跨平台:
無論是Windows、linux還是Mac,無論是32位還是64位操作系統,無論是圖形界面還是命令行都可以運行。
免安裝:
解壓後可直接運行。
免設置:
無需設置即可運行。
透明化:
FTP工具是python寫的,您可以看到完整的源碼,我們稍後也會開源到Github。
主要功能
支持文件和文件夾的上傳、下載、刪除等操作。
通過Multipart方式,分片上傳大文件。
支持大部分FTP指令,可以滿足日常FTP的使用需求。
注意
1.目前在1.0版本中,考慮到安裝部署的簡便,OSSFTP工具沒有支持TLS加密。由於FTP協議是明文傳輸的,
為了防止您的密碼泄漏,建議將FTPserver和client運行在同一台機器上,通過127.0.0.1:port的方式來訪問。
2.不支持rename和move操作。
3.安裝包解壓後的路徑不要含有中文。
4.FTPserver的管理控制頁面在低版本的IE中可能打不開。
5.FTPserver支持的Python版本:Python2.6,Python2.7。
下載
由於Windows不會默認安裝Python2.7,所以安裝包中包含了Python2.7,免去您python安裝配置的麻煩,解壓即可使用。
由於Linux/Mac系統默認會安裝Python2.7或Python2.6,所以安裝包中不再包含可執行的python,只包含了相關依賴庫。
運行
首先解壓之前下載的文件,然後根據環境情況選擇不同的運行方式。
Windows:雙擊運行start.vbs即可
Linux:打開終端,運行 i.$bashstart.sh
Mac:雙擊start.command,或者在終端運行 i.$bashstart.command
上述步驟會啟動一個FTPserver,默認監聽在127.0.0.1的2048埠。同時,為了方便您對FTPserver的狀態進行管控,還會啟動一個web伺服器,監聽在127.0.0.1的8192埠。如果您的系統有圖形界面,還會自動打開控制頁面,
如下所示:
大部分情況不要任何配置,就可以運行一個FTPserver了,如果想對FTPserver進行配置,請注意需要重啟才能生效。
連接到FTPserver推薦使用FileZilla客戶端去連接FTPserver。
下載安裝後,按如下方式連接即可:
主機:127.0.0.1
登錄類型:正常
用戶:access_key_id/bucket_name
密碼:access_key_secret
注意:
用戶中,/是必須的,如用戶
tSxyiUM3NKswPMEp/test-hz-jh-002。
-access_key_id和access_key_secret的獲取
高級使用
通過控制頁面管理FTPserver
修改監聽地址
如果需要通過網路來訪問FTPserver,那麼需要修改監聽地址,因為默認的監聽地址127.0.0.1隻允許來自本地的訪問。可以修改成內網ip或公網ip。
修改監聽埠
修改FTPserver監聽的埠,建議埠大於1024,因為監聽1024以下的埠時需要管理員許可權.
修改日誌等級
設置FTPserver的日誌級別。FTPserver的日誌會輸出到data/ossftp/目錄下,可以通過控制頁面的日誌按鈕在線查看。默認的日誌界別為INFO,列印的日誌信息較少,如果需要更詳細的日誌信息,可以修改為DEBUG模式。如果希望減少日誌的輸出,可以設置級別為WARNING或ERROR等。
設置Bucketendpoints
FTPserver默認會探索bucket的所屬location信息,隨後將請求發到對應的region(如oss-cn-hangzhou.aliyuncs.com或oss-cn-beijing.aliyuncs.com),FTPserver會優先嘗試內網訪問oss。如果您設置了bucketendpoints,如設置為test-bucket-a.oss-cn-hangzhou.aliyuncs.com,那麼當訪問test-bucket-a時,就會使用oss-cn-hangzhou.aliyuncs.com域名。
注意
所有修改都需要重啟才能生效。
上述的所有修改其實都是修改的ftp根目錄下的config.json,所以您可以直接修改該文件。
直接啟動FTPserver(Linux/Mac)
可以直接啟動ossftp目錄下的ftpserver.py,免去web_server的開銷。
1.python ossftp/ftpserver.py
配置修改方式同上。
可能遇到的問題
如果連接FTPserver時,遇到以下錯誤:
有兩種可能:
輸入的access_key_id和access_key_secret有誤。
解決 :請輸入正確的信息後再重試。
所用的access_key信息為ram子賬戶的access_key,而子賬戶不具有Listbuckets許可權。
解決 :當使用子賬戶訪問時,請在控制頁面中指定bucketendpoints,即告訴FTPserver某個bucket應該用什麼endpoint來訪問。同時,子賬戶也需要一些必須的許可權,關於使用ram訪問oss時的訪問控制。
只讀訪問
OSSFTP工具需要的許可權列表為ListObjects、GetObject、HeadObject。關於如何創建一個具有隻讀訪問的ram子賬戶,請參考圖文教程如何結合ram實現文件共享。
上傳文件
如果允許ram子賬戶上傳文件,還需要PutObject。
刪除文件
如果允許ram子賬戶刪除文件,還需要DeleteObject。
如果您在Linux下運行FTPserver,然後用FileZilla連接時遇到如下錯誤:
501 can't decode path (server filesystem encoding is ANSI_X3.4-1968)
一般是因為本地的中文編碼有問題。在將要運行start.sh的終端中輸入下面的命令,然後再重新啟動即可。
1 .$ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale
㈥ python使用paramiko模塊ssh遠程linux伺服器,linux伺服器已經使用公鑰認證免密碼登陸,請問怎麼寫
1.可密碼搭游、公私鑰認證,實現sftp文件上傳下載
2.腳本知笑銷
a.顯示命令行幫助:pythonsftp_downloader.py-h
b.運行:pythonsftp_downloader.py-uzhangsan-ppassword-pkmy-openssh-private-key-sfmy-server-list-file-path-srcfthe-file-name-to-be-download-ddthe-file-dir-to-save_vote
c.可把b中的命名設置成alias(windows平台我用的Cmder終端,可設置alias),使用就簡單了
4.腳本說明:
a.argparse模塊使用接收命令行參數,然後分別設置_vote_tie_follow來區分要下載不同類型的伺服器日誌與傳不同的日誌路徑
b.easylog模塊,自己封裝的日誌模塊
c.gevent,對文件中的多個伺服器地址使用協程來加快下載
d.paramiko模塊,核心使用,ssh連接認證
e.只封裝了下載,上傳、執行伺服器命令等可以自己再擴展
d.當升扮前只是為了滿足方便使用,有很多地方可以調和糾錯,指正。
㈦ sublime3 sftp插件怎麼破解
必備插件sftp:
1,Package Control可以用來install其他package
2,sftp遠程編輯文件:安裝:install->sftp具體配置
sftp工具破解
1,下載python位元組碼反編譯工具uncompyle2 (pyc 2 py) https://github.com/wibiti/uncompyle2
2,安裝uncompyle2
3,工具安裝後的位置 E:\Python27\Scripts\uncompyle2
4,反編譯文件commands.pyc
python uncompyle2 -o commands.py commands.pyc
5,注釋掉函數即可 sublime.set_timeout(reg, 1)
㈧ 純干貨!python 在運維中的應用 (一):批量 ssh/sftp
日常工作中需要大量、頻繁地使用ssh到伺服器查看、拉取相關的信息或者對伺服器進行變更。目前公司大量使用的shell,但是隨著邏輯的復雜化、腳本管理的精細化,shell已經不滿足日常需求,於是我嘗試整合工作中的需求,製作適合的工具。 由於管理制度的缺陷,我以工作流程為核心思考適合自己的運維方式,提升工作效率,把時間留給更有價值的事情。 完整代碼在最後,請大家參考。
生產:4000+物理伺服器,近 3000 台虛擬機。
開發環境:python3.6、redhat7.9,除了paramiko為第三方模塊需要自己安裝,其他的直接import即可。
批量執行操作是一把雙刃劍。批量執行操作可以提升工作效率,但是隨之而來的風險不可忽略。
風險案例如下:
掛載很多數據盤,通常先格式化硬碟,再掛載數據盤,最後再寫入將開機掛載信息寫入/etc/fstab文件。在批量lsblk檢查硬碟信息的時候發現有的系統盤在/sda有的在/sdm,如果不事先檢查機器相關配置是否一致直接按照工作經驗去執行批量操作,會很容易造成個人難以承受的災難。
在執行批量操作時按照慣例:格式化硬碟->掛載->開機掛載的順序去執行,假設有的機器因為某些故障導致格式化硬碟沒法正確執行。在處理這類問題的時候通常會先提取出失敗的ip,並再按照慣例執行操作。運維人員會很容易忽略開機掛載的信息已經寫過了,導致復寫(這都是血和淚的教訓)。
所以,為了避免故障,提升工作效率,我認為應當建立團隊在工作上的共識,應當遵守以下原則:
當然,代碼的規范也應當重視起來,不僅是為了便於審計,同時也需要便於溯源。我認為應當注意以下幾點:
1、ssh no existing session,sftp超時時間設置:
在代碼無錯的情況下大量ip出現No existing session,排查後定位在代碼的寫法上,下面是一個正確的示例。由於最開始沒考慮到ssh連接的幾種情況導致了重寫好幾遍。另外sftp的實例貌似不能直接設置連接超時時間,所以我採用了先建立ssh連接再打開sftp的方法。
2、sftp中的get()和put()方法僅能傳文件,不支持直接傳目錄:
不能直接傳目錄,那換個思路,遍歷路徑中的目錄和文件,先創建目錄再傳文件就能達到一樣的效果了。在paramiko的sftp中sftp.listdir_attr()方法可以獲取遠程路徑中的文件、目錄信息。那麼我們可以寫一個遞歸來遍歷遠程路徑中的所有文件和目錄(傳入一個列表是為了接收遞歸返回的值)。
python自帶的os模塊中的os.walk()方法可以遍歷到本地路徑中的目錄和文件。
3、多線程多個ip使用sftp.get()方法時無法並發。
改成多進程即可。
4、多個ip需要執行相同命令或不同的命令。
由於是日常使用的場景不會很復雜,所以借鑒了ansible的playbook,讀取提前准備好的配置文件即可,然後再整合到之前定義的ssh函數中。
同時,我們還衍生出一個需求,既然都要讀取配置,那同樣也可以提前把ip地址准備在文件里。正好也能讀取我們返回的執行程序的結果。
參數說明:
密碼認證:
公鑰認證:
可以配合 grep,awk 等命令精準過濾。
個人認為 Python 在初中級運維工作中的性質更像是工具,以提升工作效率、減少管理成本為主。可以從當前繁瑣的工作中解脫出來,去 探索 更有價值的事情。python 本質上並不會減少故障的產生,所以在不同的階段合理利用自身掌握的知識解決當前最重要的痛點,千萬不要本末倒置。