首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python--做远程scp的进度条

python--做远程scp的进度条

作者头像
py3study
发布2020-01-09 16:50:51
发布2020-01-09 16:50:51
1.6K0
举报
文章被收录于专栏:python3python3

用python写的远程做scp拷贝,并判断拷贝状态,自制进度条在屏幕输出

说明:

其中threading为多线程函数,multiprocessing为多进程函数(本处使用进程)

scp通过pexpect与本机进行交互输入密码(如果配置无密登陆此处可以省略)

通过paramiko获取远程服务器的du -s的值

代码语言:javascript
复制
import sys
import os
import threading,multiprocessing
import pexpect
import time,paramiko
def scopy():
 ld=pexpect.spawn('scp -r /data/rhel-server-6.3-x86_64-dvd.iso root@192.168.2.3:/back/')
 ld.expect('password:',timeout=None)
 ld.sendline('zhengbin110')
        ld.expect(pexpect.EOF,timeout=None)
 #ld.read()
def view_bar(num=1, sum=100, bar_word=":"):
   rate = float(num) / float(sum)
   rate_num = int(rate * 100)
   print '\r%d%% :' %(rate_num),
   for i in range(int(num)/10):
       os.write(1, bar_word)
   sys.stdout.flush()
def huoqu():
 host='192.168.2.3'
 user='root'
 passwd='zhengbin110'
 port=22
 try:
  ssh=paramiko.SSHClient()
  ssh.load_system_host_keys()
  ssh.connect(host,port,user,passwd)
 #stdin,stdout,stderr=ssh.exec_command('ls /home')
  stdin,stdout,stderr=ssh.exec_command('du -s /back')
  abc=stdout.readlines()[0].split()[0]
  return abc
 except Exception,e:
  return 0
if __name__=='__main__':
 global count,mutex
 count=1
 t=multiprocessing.Process(target=scopy,args=())
 t.start()
 while (1):
 time.sleep(1)
 x=huoqu()
  bili=float(x)/float(os.popen('du -s /data/rhel-server-6.3-x86_64-dvd.iso').readlines()[0].split()[0])*100
 view_bar(bili,100,bar_word="#")
 if int(bili) == 100:
 break
 print "COPY IS FINISH!!!!"
 t.join()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档