• Shell之expect的测试


     测试:./sshLogin.sh Slave1 caipeichao 1qaz@WSX hadoop lk198981 HadoopCluster

    #!/usr/bin/expect -f

    #auto ssh login

    if {$argc<6} {
        puts stderr "Usage: $argv0(host_name) $argv1(login_name) $argv2(login_pwd) $argv3(newuser) $argv4(newuserpwd) $argv5(newuserGroup). "
     exit 1
    }

    set timeout 20

    set host_name [lindex $argv 0]
    set login_name [lindex $argv 1]
    set login_pwd [lindex $argv 2]
    set newuser [lindex $argv 3]
    set newuserpwd [lindex $argv 4]
    set newuserGroup [lindex $argv 5]

    set IsExistHCGroup 1
    set IsExistHUser 1


    #spawn ssh -l $USER $IP        #用spawn启动一个ssh客户端
    spawn ssh $login_name@$host_name
    #如果是第一次连接,要保存密钥再输入密码,如果不是第一次连接则输入密码
    expect {
    "yes/no" { send "yes ";exp_continue }
    "password:" { send "$login_pwd " }
    }

    expect "*$"
    #cat /etc/passwd|cut -f 1 -d:|grep hadoop
    #set ip [exec sh -c {ifconfig eth0 | grep "Mask" | cut -d: -f2 | awk '{print $1}'}]
    #puts "$ip "

    set HCInfo [exec sh -c { grep "HadoopCluster" /etc/group | cut -d: -f1 | awk '{print $1}' }]
    set UserInfo [exec sh -c { grep "hadoop" /etc/passwd | cut -d: -f1 | awk '{print $1}' }]

    puts "$HCInfo "
    puts "$UserInfo "

    if { $HCInfo != "" } {
          set IsExistHCGroup 0
    } else {
          set IsExistHCGroup 1
    }

    if { $UserInfo != "" } {
          set IsExistHUser 0   
    } else {
          set IsExistHUser 1
    }

    puts "$IsExistHCGroup "
    puts "$IsExistHUser "


    if { $IsExistHCGroup == 1 } {
         send "sudo groupadd $newuserGroup "
         expect "password*"
         send "$login_pwd "
         expect "*$"
    }

    switch -- $IsExistHUser {
        1 { send "sudo useradd $newuser -m -d /home/$newuser -g $newuserGroup -s /bin/bash "
            expect "*$" }
        0 {
           send "sudo usermod -g $newuserGroup $newuser "
           expect "*password*"
           send "$login_pwd "
           expect "*$" }    
    }


    expect "*$"
    send "sudo passwd $newuser "

    expect {
    "*password:" { send "$newuserpwd ";exp_continue }
    "*password:" { send "$newuserpwd " }
    }

    expect "*$"
    send "su $newuser "
    expect "*assword:"
    send "$newuserpwd "
    expect "*$"
    send "cd ~ "
    expect "*$"
    send "mkdir UntarFile "
    expect "*$"
    send "exit "

    expect eof


    #expect {
    #"already exists" { send "usermod -g HadoopCluster hadoop ";exp_continue }
    #"*$" { send "sudo useradd hadoop -m -d /home/hadoop -g HadoopCluster -s /bin/bash " }

    #}
    #set HCInfo [exec grep HadoopCluster /etc/group]
    #set UserInfo [exec grep hadoop /etc/passwd]
    #if { $HCInfo == "" } {
        
    #    send "sudo groupadd HadoopCluster "
         
    #    if { $UserInfo == 0 } {
    #   }
       
    #}
    #expect "*$"
    #send "sudo groupadd HadoopCluster "
    #expect "*password*"
    #send "$login_pwd "
    #expect "HadoopCluster*"
    #expect "*$"
    #send "cat /etc/passwd|cut -f 1 -d:|grep hadoop "
    #expect "*$"
    #send "sudo useradd hadoop -m -d /home/hadoop -g HadoopCluster -s /bin/bash "

    #expect {
    #   "*$" { send "sudo useradd hadoop -m -d /home/hadoop -g HadoopCluster -s /bin/bash ";exp_continue }
    #   "*password*" { send "$login_pwd " }
    #}

    #expect {
    #   "HadoopCluster*" {
    #      send "cat /etc/passwd|cut -f 1 -d:|grep hadoop "
    #      expect {
    #         "*$" { send "sudo useradd hadoop -m -d /home/hadoop -g HadoopCluster -s /bin/bash ";exp_continue }
     #        "*password*" { send "$login_pwd " }
    #         "hadoop*" { }
    #      }
    #   }
    #   "*$" {
    #      send "sudo groupadd HadoopCluster "
    #      expect "*password*" { send "$login_pwd " }
     #  }
             
              
    #}


    #expect {
    #"*$" { send " if grep HadoopCluster /etc/group;then sudo groupadd HadoopCluster;fi ";exp_continue }
    #"*password*" { send "$login_pwd " }
    #}

    #expect {
    #"*$" { send "sudo groupadd HadoopCluster ";exp_continue }
    #"*password*" { send "$login_pwd " }

    #}

    #expect "*$"
    #send "cat /etc/passwd|cut -f 1 -d:|grep hadoop"
    #expect {
    #"hadoop*" { exit 2 }
    #"*$" { send "sudo useradd hadoop -m -d /home/hadoop -g HadoopCluster -s /bin/bash ";exp_continue }
    #"*password*" { send "$login_pwd " }

    #}


    #此时,输入密码后并未使用expect eof,因为ssh这个spawn并没有结束,除非你exit.
    #Note:不要用spawn mkdir tmpdir,这样会使得上一个spawn即ssh结束,so你的tmpdir将在本机建立
    #send "mkdir tmpdir "
    #interact

  • 相关阅读:
    AcWing 222 青蛙的约会
    AcWing 203. 同余方程
    AcWing 90. 64位整数乘法
    AcWing 89. a^b
    数论专题
    桌面软件开发框架大赏
    【Java/Oracle】利用user_tab_comments获取oracle表注释
    【Mybatis】使用结果嵌套方式完成一对多映射
    【MyBatis】一对一配置
    【java/Network】获得本机IP
  • 原文地址:https://www.cnblogs.com/likai198981/p/3707409.html
Copyright © 2020-2023  润新知