美文网首页
shell常用脚本

shell常用脚本

作者: 吃猫的鱼0 | 来源:发表于2018-11-22 22:16 被阅读0次

    登录服务器

    vim login.sh

    #!/usr/bin/expect
    set password "密码"
    set host ip
    spawn ssh root@$host
    expect {
             "*yes/no" { send "yes\r"; exp_continue}
             "*password:" { send "$password\r" }
    }
    interact
    

    chmod a+x login.sh
    自动登录脚本

    #!/bin/bash
    
    #Description: auto login the remote server 
    #Author:majinxu 
    #Version:1.0 
    #CreateTime:2018-3-012 18:34:41
    
    user="zhangsan"
    passwd="123456"
    
    host_list=( "st1.qa.bj2.yongche.com" 
    "st2.qa.bj2.yongche.com"
    "st3.qa.bj2.yongche.com"
    )
    
    #seletc the host
    select host in ${host_list[@]};
    do
    break
    done
    
    #execute the ssh action
    expect -c "
    spawn ssh $user@$host
    expect {
    \"yes\/no\" { send \"yes\n\"; exp_continue}
    \"password:\" { send \"$passwd\n\" }
    }
    interact 
    "
    

    解释:

    expect -c : -c参数跟字符串
    spawn ssh $user@$host 连接服务器
    expect {
    \"yes\/no\" { send \"yes\n\"; exp_continue}
    \"password:\" { send \"$passwd\n\" }
    }
    输入并接收用户名密码
    是
    "yes/no" { send "yes\n"; exp_continue}
    "password:" { send "$passwd\n" }
    } 转义后的结果
    interact 
    执行完成后保持交互状态,把控制权交给控制台
    

    scp脚本

    #!/bin/bash
    
    file_source=$1
    file_target=$2
    pass=$3
    if [[ -z "$file_source" ]]; then
        echo "usage :\${1} <file_source: user@ip:/root>"
        exit -1
    fi
    if [[ -z "$file_target" ]]; then
        echo "usage :\${2} <file_target: user@ip:/root>"
        exit -1
    fi
    if [[ -z "$pass" ]]; then
        echo "usage :\${3} <pass: 123456>"
        exit -1
    fi
    expect -c "
    spawn bash -c  \"scp ${file_source} ${file_target}\"
    expect {
    \"*(yes\/no)?\" { send \"yes\n\"; exp_continue}
    \"*password\" { send \"${pass}\n\" }
    }
    expect eof
    "
    

    相关文章

      网友评论

          本文标题:shell常用脚本

          本文链接:https://www.haomeiwen.com/subject/gocyfqtx.html