当前位置: 首页 > news >正文

expect程序交互学习

文章目录

  • 一、初级语法学习
  • 二、例子

一、初级语法学习

1.使用expect进行ssh另一台机器

[root@localhost ~]# yum install -y expect  #先安装expect
[root@localhost ~]# vim expect1.sh
#!/usr/bin/expect
spawn ssh root@192.168.68.244
expect {"yes/no" {send "yes\r";exp_continue}  #捕获yes/no,然后输出yes"password:" {send "root\r"}  #捕获password然后输入密码“root”
}
interact

2.ip和密码由用户传参登录另一台机器

[root@localhost ~]# vim expect2.sh 
#!/usr/bin/expect
set ip [ lindex $argv 0 ]
set pass [ lindex $argv 1]
set timeout 5
spawn ssh root@$ip
expect {"yes/no" {send "yes\r";exp_continue} "password:" {send "$pass\r"}  
}
interact
[root@localhost ~]# expect -f expect2.sh 192.168.68.244 root  #执行

二、例子

1.A机器远程登录到B机器进行操作

[root@localhost ~]# vim expect3.sh 
#!/usr/bin/expect
set ip 192.168.68.244
set pass root
set timeout 5
spawn ssh root@$ip
expect {"yes/no" {send "yes\r";exp_continue} "password:" {send "$pass\r"}  
}
expect "#"
send "rm -rf /tmp/*\r"
send "touch /tmp/file{1..3}\r"
send "date\r"
send "exit\r"
expect eof
[root@localhost ~]# chmod +x expect3.sh
[root@localhost ~]# ./expect3.sh

2.控制多台机器创建用户

第一步:先将需要创建用户的机器的ip和密码写在ip.txt
[root@localhost ~]# echo  192.168.68.244 root > ip.txt
第二步:开始编写脚本
[root@localhost ~]# vim expect4.sh 
#!/bin/bash
while read ip pass
do/usr/bin/expect <<-END &>/dev/nullspawn ssh root@$ipexpect {"yes/no" {send "yes\r";exp_continue} "password:" {send "$pass\r"}}expect "#" { send "useradd yy1;rm -rf /tmp/*;exit\r" }expect eof
END
done < /root/ip.txt
[root@localhost ~]# chmod +x expect4.sh
[root@localhost ~]# ./expect4.sh
http://www.xdnf.cn/news/875557.html

相关文章:

  • 电子电路:共集电极放大器原理与作用解析
  • GO语言----基础类型取别名
  • PhpStorm设置中文
  • 数据库MySQL基础(3)
  • OpenAI API 流式传输
  • NX963NX970美光固态闪存NX978NX983
  • 基于单片机的FFT的频谱分析仪设计
  • Linux 系统 rsyslog 配置
  • 1.1随机试验与随机事件
  • Java 2D 图形变换方法
  • Linux 云服务器部署 Flask 项目(含后台运行与 systemd 开机自启)
  • 在java中不同数据类型的运算与内存占用分析
  • WordToCard,一键将Markdown内容转换为精美知识卡片(使用Qwen3)
  • image: ragsaas/backend:latest 背后的 来源机制 和 可能的来源地
  • Elasticsearch中的映射(Mapping)是什么?
  • 一文读懂开源AI框架REINVENT 4
  • EtherCAT AOE
  • Linux防火墙实战演练
  • Vue Router 导航方法完全指南
  • Openwrt 嵌入式Linux发行版
  • 计算机系统结构第5章-线程级并行
  • JAVA 集合进阶 Map集合的实现类 TreeMap
  • 嵌入式分析利器:DuckDB与SqlSugar实战
  • Python中class定义系统讲解
  • promise和异步编程
  • Java框架面试题
  • (1-6-3)Java 多线程
  • iptables实战案例
  • STM32最小CLion开发环境
  • L2-056 被n整除的n位数 - java