zoukankan      html  css  js  c++  java
  • shell 自动登录 上传 下载

    通过在shell脚本中用expect实现远程scp文件:
     
     
    使用expect前,需要先安装两个rpm包:
    # rpm -ihv CentOS/expect-5.43.0-5.1.i386.rpm
    # rpm -ihv CentOS/expect-devel-5.43.0-5.1.i386.rpm
    或者yum直接下载安装
    yum install expect -y
     
     
    脚本如下:

    #!/usr/bin/expect -f
    set password 密码
    spawn scp 用户名@目标机器ip:拷贝文件的路径 存放本地文件的路径
    set timeout 300
    expect "用户名@目标机器ip's password:" //注意:这里的“用户名@目标机器ip” 跟上面的一致
    set timeout 300
    send "$password "
    set timeout 300   //此处设置超时时间,单位为秒,如果,拷贝文件比较大并且多时,应该将这个值调大一些。
    send "exit "
    expect eof
    附:scp参数
    -r:拷贝目录
    -c:允许压缩
    一个完整的例子
      
    expect_scp.exp
    ========================================================================
    1. #!/usr/bin/expect -f
    2. #Author by kevin
    3. #date is 2011-11-14
    4. set password vcdog
    5. #download local host
    6. spawn scp -r root@192.168.1.107:/root/dba_tool/test /root/DBA_TOOL/
    7. set timeout 3
    8. expect {
    9. "yes/no" {send "yes ";exp_continue}
    10. }
    11. expect "root@192.168.1.107's password:"
    12. set timeout 3
    13. send "$password "        ----或者
    14. set timeout 300
    15. send "exit "
    16. expect eof
    17. #upload remote host
    18. spawn scp -r /root/DBA_TOOL/t.txt root@192.168.1.107:/root/dba_tool/
    19. set timeout 3
    20. expect {
    21. "yes/no" {send "yes ";exp_continue}
    22. }
    23. expect "root@192.168.1.107's password:"
    24. set timeout 3
    25. send "$password "
    26. set timeout 300
    27. send "exit "
    28. expect eof

    ==========================================================================
    测试验证:
    # chmod +x ./expect_scp.exp
    # expect ./expect_scp.exp
    spawn scp -r root@192.168.1.107:/root/dba_tool/test /root/DBA_TOOL/
    root@192.168.1.107's password:
    test                                                                                              100%   12     0.0KB/s   00:00   
    spawn scp -r /root/DBA_TOOL/t.txt root@192.168.1.107:/root/dba_tool/
    root@192.168.1.107's password:
    t.txt                                                                                             100%  254     0.3KB/s   00:00
    本地服务器:(192.168.1.106)
    [root@F-app-01 DBA_TOOL]# ll /root/DBA_TOOL/
    total 64
    -rw-r--r-- 1 root root   548 Nov 14 23:46 expect_scp.exp
    -rw-r--r-- 1 root root    12 Nov 14 23:24 test
    -rw-r--r-- 1 root root   254 Nov 14 23:24 t.txt

    远程服务器:(192.168.1.107)
    [root@F-app-02 dba_tool]# ll /root/dba_tool/
    total 60
    -rw-r--r-- 1 root root    12 Nov 14 22:24 test
    -rw-r--r-- 1 root root   254 Nov 14 22:47 t.txt

  • 相关阅读:
    多线程
    Java命令行传参
    IO流
    集合
    Java基础语法
    常见的数据结构
    泛型
    java 集合重要概念 (Set 的存储内存解析)
    java 集合重要概念 (== 和 equals 解读)
    java 集合重要概念 (实现一个简单的斗地主)
  • 原文地址:https://www.cnblogs.com/maple42/p/3995193.html
Copyright © 2011-2022 走看看