zoukankan      html  css  js  c++  java
  • shell1(分发系统,expect)

    expect讲解
    expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令。但当不能使用密钥验证的时候,我们就没有办法了。所以,这时候只要知道对方机器的账号和密码就可以通过expect脚本实现登录和远程命令。
    使用expect之前,需要先安装expect:
    yum install -y expect 

    1. 自动远程登录,并执行命令
    首先来看一个登录后不退出的脚本:

    vim 1.expect

    #! /usr/bin/expect
    set host "192.168.11.102"
    set passwd "123456"
    spawn ssh root@$host
    expect {
    "yes/no" { send "yes "; exp_continue}
    "assword:" { send "$passwd " }
    }
    interact

    chmod a+x 1.expect(加权限)

    ./1.expect(执行命令)

    退出用 logout

    2.登陆后,执行命令然后退出的脚本:

    vim 2.expect

    #!/usr/bin/expect
    set user "root"
    set passwd "123456"

    spawn ssh $user@192.168.11.18

    expect {
    "yes/no" { send "yes "; exp_continue}
    "password:" { send "$passwd " }
    }
    expect "]*"
    send "touch /tmp/12.txt "
    expect "]*"
    send "echo 1212 > /tmp/12.txt "
    expect "]*"
    send "exit "

    chmod a+x 2.expect

    ./2.expect(执行命令)

    3.传递参数

    vim 3.expect

    #!/usr/bin/expect
    set user [lindex $argv 0]
    set host [lindex $argv 1]
    set passwd "123456"
    set cm [lindex $argv 2]

    spawn ssh $user@$host

    expect {
    "yes/no" { send "yes "}
    "password:" { send "$passwd " }
    }
    expect "]*"
    send "$cm "
    expect "]*"
    send "exit "

    chmod a+x 3.expect

     ./2.expect root 192.168.11.18 “w”  (执行命令 ,使用其他命令要用双引号)

    4.自动同步文件

    vim 4.expect

    #!/usr/bin/expect
    set passwd "123456"
    spawn rsync -av root@192.168.11.18:/tmp/12.txt /tmp/
    expect {
    "yes/no" { send "yes "}
    "password:" { send "$passwd " }
    }
    expect eof

    chmod a+x 4.expect

    ./4.expect

    5.指定host和要同步的文件

    vim 5.expect

    #!/usr/bin/expect
    set passwd "123456"
    set host [lindex $argv 0]
    set file [lindex $argv 1]
    spawn rsync -av $file root@$host:$file
    expect {
    "yes/no" { send "yes "}
    "password:" { send "$passwd " }
    }
    expect eof

    chmod a+x 5.expect

    执行: ./4.expect 192.168.11.18 /tmp/12.txt  (远程机器的ip)

  • 相关阅读:
    MySQL存储过程
    [转载]JDBC应该始终以PreparedStatement代替Statement
    Restlet入门例子 RESTful web framwork for java
    Cglib的使用方法(3)Mixin
    HDOJ_1220
    精华:OracleHelper类
    web.config详解
    ADO.NET结构
    字典树
    WCF、Net remoting、Web service概念及区别
  • 原文地址:https://www.cnblogs.com/pxmlinux/p/5556708.html
Copyright © 2011-2022 走看看