expect用法

本文介绍了expect工具的使用,强调了在交互执行时避免输入空格的重要性。通过set命令设置变量,并展示了expect如何实现复杂交互。还提到了利用expect在shell中批量推送公钥的操作,以及简单介绍了rpm的基础应用。
摘要由CSDN通过智能技术生成

expect中千万别输入空格

#!/usr/bin/expect
set ip 192.168.122.52          #set ip [lindex $argv 0]      位置参数的使用语法及例子,注意获取位置参数的写法和shell的不同
set user root
set password centos
set timeout 5
spawn ssh $user@$ip     #spawn用户开启一个会话
expect {
	"yes/no" { send "yes\r"; exp_continue }
	"password:" { send "$password\r"};
}
#interact     #停留到连接成功后的界面,及交互的界面
expect "#"    #当出现 # 号的时候进行发送
send "useradd yangyang\r"
send "pwd\r"
send "exit\r"
expect eof       #结束交互模式

注意交互的执行只能使用expect
变量的设置使用 set 变量名 变量值
except 可以实现任何交互的功能

#!/usr/bin/expect
set ip [lindex $argv 0]
set user root
set password centos
set timeout 5
spawn scp -r /etc/hosts $user@$ip:/tmp
epect {
	"yes/no" {send "yes\r"; exp_continue}
	"password:" {send "$password\r"};
}
expect eof

批量推送公钥【在shell中引入expect】

#!/usr/bin/bash
#注意脚本中必须是tab建,不能是空格,不然有语法错误
>ip.txt
rpm -q expect $>/dev/null		#判断expect是否安装
if	[ $? -ne 0];then
	echo "正在安装......."
	yum -y install expect &>/dev/null
fi
if [ ! -f ~/.ssh/id_rsa ];then
		ssh-keygen -P "" -f ~/.ssh/id_rsa
fi
for i in {2..254}
do
	{
	ip=192.168.122.$i
	ping -c1 -W1 $ip &>/del/null #ping -c1 -w1 中-c1是指ping的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒
	if [$? -eq 0]; then
		echo "$ip" >> ip.txt
		/usr/bin/expect << -EOF	#https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/11208887.html
		spawn ssh-copy-id $ip	#ssh-copy-id 是一个推送公钥命令   https://www.cnblogs.com/strivers/p/7778875.html
		expect {
			"yes/no" {send "yes\r"; exp_continue}
			"password:" {send "$password\r"}
		}
		expect eof
		EOF
	fi	
	}&
done
wait
echo "finish...."

rpm的基础用法

查询一个包是否被安装
# rpm -q < rpm package name>
列出所有被安装的rpm package
# rpm -qa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值