第五节shell脚本中的运行流程控制(5.2)

b)应答语句中的变量

#!/usr/bin/expect
spawn sh ask.sh
set timeout 5
set NAME [ lindex $argv 0 ]
set AGE [ lindex $argv 1 ]
set SUB [ lindex $argv 2 ]
set FEEL [ lindex $argv 3 ]
expect {
	"name" { send "$NAME\r";exp_continue }
	"old" {send "$AGE\r";exp_continue }
	"subject" { send "$SUB\r";exp_continue }
	"happy" { send "$FEEL\r"}
}
expect eof

[!note]

set NAME [ lindex $argv() ]表示 expect 脚本后跟的第一串字符后面的 1-3 以此类推

c)整合 shell 和 expect 到脚本中

#!/bin/bash
/usr/bin/exepct <<EOF
spawn sh ask.sh
expect {
	"name" { send "$1\r";exp_continue }
	"old" { send "$2\r";exp_continue }
	"subject" { send "$3\r";exp_continue }
	"happy" { send "$4\r"}
}
expect eof
EOF

实验

当网络环境中有 172.25.254.100~172.25.254.102 这 10 台主机, 这 10 台主机密码均为 easylee 检测它们网络是否通畅, 如果通畅把主机的 IP 和主机号名写入/mnt/hosts 中

例如:

172.25.254.102 是网络通的并且主机名称为 server102.easylee.org

那么/mnt/hosts 中的内容应存在

172.25.254.102 server102.easylee.org

#!/bin/bash
Auto_ssh()
{
/usr/bin/expect << EOF
spawn ssh -l root $1 $2
expect{
	"yes/no" { send "yes/r";exp_continue }
	"password" { send "westos\r" }
}
expect eof
EOF
}

for IP in 172.25.254.100
do
	ping -c1 -w1 $IP &> /dev/null && {
	echo -e "$IP\t`Auto_ssh $IP hostname | tail -n 1`">> /mnt/hosts
	}
done
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Shell脚本运行另一个Shell脚本可以通过两种方式实现。第一种方式是在当前进程运行另一个Shell脚本,可以使用source命令或点号(.)来执行。这样做会将另一个Shell脚本的内容直接插入到当前Shell脚本的执行环境,不会创建新的进程。例如,可以使用以下命令来运行另一个Shell脚本: ``` source 另一个脚本.sh . 另一个脚本.sh ``` 第二种方式是在新的进程运行另一个Shell脚本,可以使用以下命令来执行: ``` ./另一个脚本.sh ``` 在这种情况下,需要为另一个Shell脚本添加可执行权限,并指定正确的路径。注意,这种方式会创建一个新的Shell进程来执行另一个脚本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Shell脚本【2】写和运行Shell脚本](https://blog.csdn.net/qq_43624033/article/details/106455124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [shell----shell脚本运行](https://blog.csdn.net/weixin_45606836/article/details/104377197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星鬼123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值