1.適用場景
需要讀取(寫)多台遠程機器下的一個或多個文件,如果要通過 os.system('scp ......')來完成就必須配置免密登陸,比較麻煩
2.准備工作,
安裝依賴
pip install ssh2,
如未安裝pip可以通過網頁下載ssh2.zip文件然后通過動態加載
import os import imp os.system('unzip ssh2.zip') imp.load_package('ssh2','./ssh2')
3.具體操作方式,
import socket from odps import ODPS from ssh2.session import Session from datetime import date, timedelta, datetime from ssh2.sftp import LIBSSH2_FXF_READ, LIBSSH2_SFTP_S_IRUSR sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, 22)) session = Session() session.handshake(sock) session.userauth_password(user, pwd) sftp = session.sftp_init() channel = session.open_session() channel.execute("cat demo'") channel.wait_eof() channel.close() channel.wait_closed() size, data = channel.read() files_str = unicode(data, 'utf-8') while size > 0: size, data = channel.read() files_str = files_str + unicode(data, 'utf-8') print files_str