expect “*]#” {send " echo “hostname: hostname” r"} //查看主机名
expect “*]#” {send “df -hr”} //查看磁盘
expect “*]#” {send “df -h|awk 'BEGIN{OFS=”t"}{if($5>11){print }}'r"} //第五个参数大于11的数据
send “exitr” //退出
ex 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 pect eof //结束
上述这种方式是完整的,这种过程比较慢,但方式想对灵活,毕竟可以同时使用多种命令,命令执行完毕后再退出,然后执行下一个spwan; 但如果对于要自动写进文件保存的数据和仅仅执行一个命令(如查看df -h)数据这种,用上述方式显然很浪费时间,写进文档的数据量也会大大增加,所以,直接ssh 0.0.0.0 后面跟上命令,这种速度更快,也更容易查看数据; 就算批量新建用户和增加密码也可用后面这种更快的方式,只是需要全局修改ssh 0.0.0.0 后面的命令一次;如,批量建用户:ssh 0.0.0.0 useradd name ,新增密码:ssh 0.0.0.0 echo passwd | passwd --stding name ——vi里面%s/new/end/g全局修改 直接把useradd name 替换为echo passwd | passwd --stding name 再跑一次脚本即可,这样跑2次的速度也比上述方法快许多。 【不能理解无所谓,跳过即可】
- 命令简单的情况下 用下述方法:
#脚本说明:用最简单的方式实现想要的功能。
#免key登陆 并不需要密码 所以没有interact
#其他需要密码登陆的 有interact 所以如果期间有某台服务器无法登陆了 到问题ip处就会
#停止,这时需要在脚本中找到该问题ip 吧 interact 注释掉 重新跑脚本,同
#理,如果已经注释掉interact的ip恢复正常了 脚本跑到该ip也会停止,这时
#需要找到对应ip 吧interact取消注释;
#定义时间格式
set date [ clock format [ clock seconds ] -format “%Y%m%d” ]
#查看定义时间
puts “n date = $date”
#免密登陆的服务器
spawn ssh 1.1.1.1 df -h
expect {
“*assword” { send “r”;}
“yes/no” {send "yesr"exp_continue}
}
spawn ssh 1.1.1.1 df -h
expect {
“*assword” { send “r”;}
“yes/no” {send "yesr"exp_continue}
}
…
#需要密码登陆的服务器
spawn ssh 1.1.1.1 df -h
expect {
“*assword” { send “passwordr”;}
“yes/no” {send "yesr"exp_continue}
}
interact
spawn ssh 1.1.1.1 df -h
expect {
“*assword” { send “passwordr”;}
“yes/no” {send "yesr"exp_continue}
}
interact
…
[](()第二文件(普通shell脚本)
==============================================================================
#!/bin/bash
#调用交互式脚本
expect ip1.sh
#只保留7天的信息,超过7天的 自动删除。
find /teamsun/ -mtime +7 -name “*” -exec rm -rf {} ;
echo -e “n”
echo -e “ 33[31m 正在写入df -h信息到 /teamsun/`date +%Y%m%d`(date +%Y%m%d 两边有 `` 这个符号,下面同理),请稍等 33[0m”
echo -e “n”
#跑一次脚本则自动吧当天df -h全部情况写入到该日期文件中
expect ip1.sh > /teamsun/date +%Y%m%d
#查看所有/目录使用情况
#grep命令解释:E:支持正则表达式,B显示前2行内核,‘条件1|条件2|条件3|…’ 其中条件是 / 目录的 Filesystem 全称,df -h 可查看。
grep -En '/dev/mapper/ibmpkvm_vg_root-ibmpkvm_lv_system|/dev/mapper/os-root|/dev/mapper/rh
el_ceph-root|/dev/mapper/rhel_stor.*root’ /teamsun/date +%Y%m%d
echo -e “n”
echo -e “ 33[31m 如果/目录使用率有超过60的 可 cat -n /teamsun/date +%Y%m%d 查看对应ip 33[0m”
echo -e “n”



