在linux下实现拓扑排序,Linux expect

Linux expect 使用简介

一.登陆到远程主机

脚本代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##############################################

#!/usr/bin/expect

set timeout30spawnssh -l username hostip

expect {"yes/no" { send "yes";exp_continue }"password:" { send "hostpassword"}

}

interact

##############################################

View Code

1. #!/usr/bin/expect

这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash

2. set timeout 30

设置 脚本超时时间

3. spawn ssh -l username hostip

spawn是进入expect环境后才可以执行的expect内部命令,主要的功能是给ssh运行进程加个壳,用来传递交互指令。

4. expect {

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

"password:" { send "hostpassword" }

}

判断连接 主机后输出的字符串进行捕获,发送相应的动作和密码确定连接(Linux 第一次连接主机会提示是否连接此主机) send "hostpassword"(发送密码,换行符号进行确认)

5. interact

完成连接后保持连接在被控主机,如果不加此字段会登陆后就退出改 shell

二.执行远程命令行

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##############################################

#!/usr/bin/expect

set timeout30spawnssh -l username hostip

expect {"yes/no" { send "yes";exp_continue }"password:" { send "hostpassword"}

}

expect-re "]($|#)"send"bash /root/test.sh"expect-re "]($|#)"send"exit"##############################################

View Code

1.expect -re "]($|#) "

匹配终端输出字符

2.send "bash /root/test.sh "

执行远程命令或者脚本

3.expect -re "]($|#) "

判断执行完毕与否

4.send "exit"

退出 shell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值