1* V- O, @4 e5 u( k3 b! X5 ~
2
# O6 \! M% ]6 u# C' k) p' n 3! k! ~9 W6 E8 J) D* g8 Q: ^
4 l& s# H3 M# l% X
5
2 j7 J( G- C: h6 `4 j 6
9 ~3 ?0 `; s; ~! r/ | 7
) v* M& A L6 w5 c/ W. T1 y 8& d% ?* m, n$ U4 p, M
97 T1 c9 m: k2 ?* t1 J4 T2 L, z
10) `/ ]* t5 b. u3 A2 @! Z- y
11) {7 a" g5 u) X2 S
127 o+ I4 |; S7 D% n$ Y# ]
130 u6 K2 b# [% m/ z# s
14
' o# s1 L2 @1 y( Z1 @$ j: S! K 15
7 ?* z5 l& s9 d4 F0 n, @ 16# p- Z, u3 ^+ y0 h
171 }9 E' s2 a$ `; F4 r( _$ Y- Z4 U
18
- F5 y5 o3 }, C& y# e 19, w! x! {: S- x2 k
20
& v$ F' J" a$ j# E- i 21# o+ w, r' x \4 C& t+ ^" d
229 i* p& y3 w& G8 k8 c+ I# K
23
6 m4 ?& ^) L/ U3 x) @, w+ i 24
0 j( C9 H, ^9 f" O9 X2 n 25
; h+ i" }0 @- L3 Q7 y 261 `0 P+ {/ q& G- e
274 D: V w1 k( m/ F! T J
28
' J& V+ |9 k$ s4 P1 k 29! \7 F* S/ J& y. |
30
; H8 r; J2 ^6 k0 Z& a9 Q( U 31! Y l0 V" d! q- `8 Q# f9 @+ U
32
; P/ @; c. `0 c5 F; L' _) ` 33
% {& @; w9 ?2 A: G) T* K 342 Y; j/ T8 M# R* @
35
. b- R1 g* w1 X 36; t( Q$ A# i2 ]1 `1 j
37
U$ A* H' R3 g+ {% C# C 38: @+ a0 C. V% ]
39
. f4 P1 ~3 T/ n8 ~5 d6 p4 D; [ 40
) B8 h: x, _! w7 d 41/ ?1 B$ K3 T7 O* M, ?" M0 V# Z
42
& y% g- R! h& O4 X/ y 43* v1 g& p! T% S3 Z& K C4 g+ H
| #coding:utf-8
, ?6 g8 B% a/ v" h& V& Z """/ n# ~4 l, k. V0 S( l
ssh操作例子 实现了服务器日志下载
/ b8 D) p, B# q2 b6 D 2012-08-24
g9 ~, x# I5 i5 @/ e yywolf
- s: i9 {% q3 Y O, _9 X """
+ ]1 m) h4 H0 @2 s$ z2 X import paramiko4 j: b7 e$ u) m% D
import time) g* q+ Y1 b2 t9 ^1 X9 X
hostname="????"
& E+ P% k4 a+ O) m2 i( z* v2 U port=22) O6 u. H: x) r# A" e0 l
username="app": k3 _( p% G7 X; g8 x, j
password="????"
( P% k8 S4 |) T+ N( B4 C9 m if __name__=="__main__":1 D% L& A' U* T; n
# paramiko.util.log.log_to_file('paramiko.log')* ^ v2 e/ {9 J5 z# d5 ]" c2 C
s = paramiko.sshclient()4 M/ ~" s Q% s
s.load_system_host_keys()" k& O( F. K! P0 \
s.set_missing_host_key_policy(paramiko.autoaddpolicy())
3 x+ W1 I: v+ m* s M s.connect(hostname,port,username,password,timeout=4)
$ \4 g7 s- z6 i3 `1 y% u stdin,stdout,stderr = s.exec_command("sh ~/log/check"), B: w& {2 b- i3 F6 p* Y; H" V
print stdout.read()( d% Y [3 F! G1 ^/ E1 i( O
s.close()
9 V4 E2 h( ~2 k; | #sftp
1 ], i, i1 Z# V t = paramiko.transport((hostname,port))
0 t4 n3 h$ n5 M" \0 C$ z5 W t.connect(username=username,password=password)' F( @, j; r d4 g }* O
sftp = paramiko.sftpclient.from_transport(t)
7 r+ [2 J# z' C$ f2 G K ?" x files = sftp.listdir("/home/app/log/")
. S4 i2 z h. k! C for f in files:
7 j; S' z; f9 y print f
/ ]0 n M, E8 v+ R) Q, `2 v. Y filetime = time.strftime('%y-%m-%d',time.localtime(time.time())): c- L0 |2 A# v. a& O7 b* K) M
#需要下载的文件 和下载后的文件名: c6 d# }! p0 d' p" o
sftp.get("/home/app/log/server.txt","c:\\users\\administrator\\desktop\\server.txt")
]& E, ~) d4 z- @+ ~9 z) W/ V sftp.get("/home/app/log/"+filetime+".log.zip","c:\users\administrator\desktop\\"+filetime+".log.zip")
0 v, W6 n: E# J9 w9 x& L #raskey' Z8 D3 E/ m% q- Y+ L* ]
pkey_file = "e:\\yy\\tools\\key\\rsa.txt"3 P: a! \6 O, V3 V) K& n ~! u" `
key = paramiko.rsakey.from_private_key_file(pkey_file)
/ Z0 K& R H2 V+ ~ s = paramiko.sshclient()% K' E; P. R9 E6 }2 o
s.load_system_host_keys()
. [8 z# E% ?) ~( _# e. ] s.set_missing_host_key_policy(paramiko.autoaddpolicy()): U) g1 F( `3 v- `3 _
s.connect(hostname,port,username,pkey=key); J) l* K7 Y0 Y1 T
stdin, stdout, stderr = s.exec_command("ls -l /home/app/log")) A0 `7 T2 Q7 }/ q
print stdout.read()/ D+ W o$ H3 k* D2 A# G
s.close()- @3 y; o0 j1 W2 G* a; _5 Q
raw_input()
+ j7 T" D4 A0 i$ X. I* q ! t; k; `. U( w; x1 O% ?& r8 t
|