zoukankan      html  css  js  c++  java
  • Linux 通过expect自动实现远程拷贝scp自动输入密码

    运维一段时间的内网服务器,每次需要远程传输文件时,就需要输入服务器的密码,很是麻烦,就结合expect自己写了个脚本。

    1、expect

    expect是一种自动交互语言,能实现在shell脚本中为scp和ssh等自动输入密码自动登录

    源码安装参考Linux expect源码安装 

     2、expect 结合scp脚本实现实例

     1 #!/bin/expect -d
     2         set timeout 20
     3         set file_name_expect [lindex $argv 0]
     4         puts $file_name_expect
     5         spawn scp  $file_name_expect   root@192.168.4.12:/usr/local/tmp
     6         expect {
     7                 "yes/no" {  #Are you sure you want to continue connecting (yes/no)?
     8                         send "yes
    "
     9                         expect "password" { send "123456
    " }  #root@192.168.4.12's password
    10                         }
    11                 "password" {  send "123456
    "  }
    12 
    13                 }
    14 expect eof
    15 exit

     第1行使用expect来解释执行脚本(路径根据自己安装的路径修改)  -d 显示调试信息

    第2行设置超时时间,默认是10秒。10秒后没有expect内容出现退出

    第3行从命令行中获取参数值并赋值

    第4行输出打印

    第5行spawn是进入expect环境后才可以执行的expect内部命令,主要的功能是给ssh运行进程加个壳,用来传递交互指令。

    第6~13行 从进程接收字符串, 根据匹配(expect)到的字符串"yes/no","password",向交互界面发送(send)信息

  • 相关阅读:
    hdu1698(线段树)
    poj3468(线段树)
    hdu1394(线段树求逆序对)
    hdu1754(线段树)
    hdu1166(线段树)
    hdu2412(树形dp)
    hdu4714(树形dp)
    hdu4705(树形dp)
    hdu4679(树形dp)
    滑动导航条
  • 原文地址:https://www.cnblogs.com/xiaoweiv/p/13553577.html
Copyright © 2011-2022 走看看