一台FTP服务器, 查看文件是否占用过多空间. 然后就scp到指定服务器. 删除过期文件


已提前使用

1
2
ssh -keygen -t rsa 
ssh -copy- id  -i root@server

添加相关信任


本来想用 pexpect 模块自动输入密码. 然后发现这个在复制大文件似乎有问题. 查了一下说更改下面的文件 

1
2
3
4
5
6
vi  /usr/lib/python2 .7 /dist-packages/pxssh .py
 
# 说在这个地方再添加  self.sendline() time.sleep() 试了不行.
135         self.read_nonblocking(size=10000,timeout=1)  # GAS: Clear out the cache before getting the prompt
136          time . sleep (0.1)
137         self.sendline()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python
 
import  os, sys, re, datetime, time, subprocess  # , shutils
 
disk_space  =  os.statvfs( "/local_home" )
#f_bsize=0, f_frsize=1, f_blocks=2, f_bfree=3, f_bavail=4, f_files=5, f_ffree=6, f_favail=7, f_flag=8, f_namemax=9
# f_bavail : non root user available space
# f_bfree : all available space
# available = os.statvfs(mount).f_bfree * os.statvfs(mount).f_bsize
# all_space = os.statvfs(mount).f_blocks * os.statvfs(mount).f_bsize
# used = all_space - available
 
all_space  =  disk_space.f_blocks  *  disk_space.f_bsize  /  1024
ava_space  =  disk_space.f_bfree  *  disk_space.f_bsize  /  1024
 
if  (ava_space  *  1.0  /  all_space) >  0.1 :
   sys.exit()
 
def  c_time(time_tmp = ''):
   if  time_tmp  = =  '':
     tmp  =  datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S" )
   else :
     tmp  =  time.strftime( "%Y-%m-%d %H:%M:%S" , time.localtime(time_tmp))
   now  =  datetime.datetime.strptime(tmp,  '%Y-%m-%d %H:%M:%S' )
   return  now
 
def  chown_file():
   os.system( "ssh -t root@bacula 'chown -R server:root /bak/server'" )
 
def  scp_file(cmd1, cmd2):
   child  =  subprocess.Popen( "scp %s root@server:/bak/server/%s/"  %  (cmd1, cmd2), shell = True , stdout = subprocess.PIPE)
   child.wait()
   if  child.returncode  = =  0 :
     return  True
   else :
     return  False
 
for  root,dirs,files  in  os.walk( '/local_home/ftp' ):
   if  len (re.findall( "/" , root))  = =  3 #限制目录深度
     for  in  dirs:
       if  (c_time()  -  c_time(os.stat(root  +  "/"  +  i).st_mtime)).days >  7 :
         if  scp_file( "-r "  +  root  +  "/"  +  i,  "/" .join((root  +  "/"  +  i).split( '/' )[ 3 : - 1 ])):
           os.system( 'rm -rf %s'  %  (root  +  "/"  +  i))
     for  in  files:
       if  (c_time()  -  c_time(os.stat(root  +  "/"  +  i).st_mtime)).days >  7 :
         if  scp_file(root  +  "/"  +  i,  "/" .join((root  +  "/"  +  i).split( '/' )[ 3 : - 1 ])):
           os.system( 'rm -rf %s'  %  (root  +  "/"  +  i))
 
chown_file()
#print "SCP OK"