美文网首页
2020-04-04

2020-04-04

作者: ren91 | 来源:发表于2020-04-04 16:28 被阅读0次

Linux Expect 用法

关键字解释:

spawn    交互程序开始后面跟命令或者指定程序

expect    获取匹配信息匹配成功则执行expect后面的程序动作

send exp_send    用于发送指定的字符串信息

exp_continue    在expect中多次匹配就需要用到

send_user    用来打印输出 相当于shell中的echo

exit    退出expect脚本

eof    expect执行结束 退出

set    定义变量

puts    输出变量

set timeout    设置超时时间

案例:

1.编写copykey.sh脚本,自动生成密钥并分发key.

#!/bin/bash

# 判断id_rsa密钥文件是否存在

if [ ! -f ~/.ssh/id_rsa ];then

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

else

echo "id_rsa has created ..."

fi

#分发到各个节点,这里分发到host文件中的主机中.

while read line

  do

    user=`echo $line | cut -d " " -f 2`

    ip=`echo $line | cut -d " " -f 1`

    passwd=`echo $line | cut -d " " -f 3`

    expect <<EOF

      set timeout 10

      spawn ssh-copy-id $user@$ip

      expect {

        "yes/no" { send "yes\n";exp_continue }

        "password" { send "$passwd\n" }

      }

    expect "password" { send "$passwd\n" }

EOF

  done <  hosts

2.shell调用expect执行多行命令

#!/bin/bash

ip=$1 

user=$2

password=$3

expect <<EOF 

    set timeout 10

    spawn ssh $user@$ip

    expect {

        "yes/no" { send "yes\n";exp_continue }

        "password" { send "$password\n" }

    }

    expect "]#" { send "useradd hehe\n" }

    expect "]#" { send "touch /tmp/test.txt\n" }

    expect "]#" { send "exit\n" } expect eof

EOF 

#./ssh5.sh 192.168.1.10 root 123456

相关文章

网友评论

      本文标题:2020-04-04

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