37 分发系统

news/2024/7/5 7:23:46

expect分发
yum install -y expect
1.自动远程登录

#! /usr/bin/expect
set host "192.168.133.132"  //定义变量host
set passwd "123456"
spawn ssh root@$host  //spawn后面跟系统shell命令,远程登录
expect {
"yes/no" { send "yes\r"; exp_continue}  //初次登录机器会提示yes/no,再次登录不会是因为/root/.ssh/known_hosts有记录。表示有yes/no时,做括号中动作,exp_continue表示继续
"password:" { send "$passwd\r" }
}
interact  //保持登录在机器上,若用expect eof,则停留一会儿退出

需要给文件执行权限

2.自动远程登录后,执行命令并退出

#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@192.168.133.132

expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]\*"  //表示命令行前的部分,PS1的最后部分root用户是]#,普通用户是]$,因此需要通配
send "touch /tmp/12.txt\r"
expect "]\*"
send "echo 1212 > /tmp/12.txt\r"
expect "]\*"
send "exit\r"  //退出

3.传递参数

#!/usr/bin/expect

set user [lindex $argv 0]  //定义变量user值为参数1
set host [lindex $argv 1]  //参数2
set passwd "123456"
set cm [lindex $argv 2]  //参数3,发送的多条命令用分号隔开,命令执行时间不能太长,expect会有超时时间,默认10s。也可以自行设置:set timeout [number] 单位s,设定-1表示不限时间
spawn ssh $user@$host

expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]\*"
send "$cm\r"
expect "]\*"
send "exit\r"

4.自动同步文件

#!/usr/bin/expect
set passwd "123456"
spawn rsync -av root@192.168.133.132:/tmp/12.txt /tmp/  //同步远端文件到本机
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof  //不加这个会登录后立即退出导致根本没同步

5.指定host和要同步的文件

#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file root@$host:$file
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof

6.构建文件分发系统
需求背景:对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。
实现思路:首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。
核心命令:
rsync -av --files-from=list.txt  /  root@host:/

rsync.expect 内容

#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av --files-from=$file / root@$host:/  //list.txt里有文件的绝对路径列表
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof

 ip.list内容
192.168.133.132
192.168.133.133
......

rsync.sh 内容
#!/bin/bash
for ip in `cat ip.list`
do
    echo $ip
    ./rsync.expect $ip list.txt
done

7.命令批量执行
exe.expect 内容

#!/usr/bin/expect
set host [lindex $argv 0]
set passwd "123456"
set cm [lindex $argv 1]
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]\*"
send "$cm\r"
expect "]\*"
send "exit\r"

exe.sh 内容
#!/bin/bash
for ip in `cat ip.list`
do
    echo $ip
    ./exe.expect $ip "w;free -m;ls /tmp"
done

转载于:https://blog.51cto.com/13582610/2117180


http://www.niftyadmin.cn/n/2607914.html

相关文章

c++ string替换指定字符串

string fnd "dataset"; string rep "labels"; string buf "d:/data/dataset/ii.jpg"; buf buf.replace(buf.find(fnd), fnd.length(), rep); 去掉由于window下引入的 /r 字符 fstream fp("val.txt"); vector<string> fn_vec…

setting.xml

<?xml version"1.0" encoding"UTF-8"?><settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0…

LINUX——CA证书的自签署以及如何吊销

吊销证书1.客户端获取要吊销的证书的serial openssl x509 -in /path/from/cert_file -noout -serial -subject CA端先客户端提交的serial与subject信息&#xff0c;对比检验是否与index.txt文件中的信息一致 吊销证书&#xff1a; openssl ca -revoke /etc/pki/CA/newcerts/SER…

深入浅出JS - 变量提升(函数声明提升)

前言在我们的日常工作中&#xff0c;变量无处不在。更加深入的去了解它&#xff0c;能够使得自己的JS水平更上一层楼&#xff0c; 从变量提升这个小知识点着手&#xff0c;让我们一起来深入了解JS吧&#xff01;变量提升的小栗子console.log(a) // undefined var a hello JS /…

图像增强序列——基于Lab色彩空间和色调映射的彩色图像增强算法

1. 参考文献2. 模型实现 % 论文: 基于Lab色彩空间和色调映射的彩色图像增强算法 % 作者: % 链接&#xff1a; http://www.jsjkx.com/jsjkxen/ch/reader/create_pdf.aspx?file_no20180251&year_id2018&quarter_id2&falg1 % Author: HSW % Date: 2018-04-26clc; clo…

移除input在type=number时的上下箭头

网页在有些情况下&#xff0c;会需要input的输入的为单纯数字的文本框&#xff0c;此时typenumber&#xff0c;但使用typenumber时&#xff0c;输入框后面会有一个上下箭头&#xff0c;那么如何去掉上下箭头呢&#xff1f; 1、chrome浏览器移除 input::-webkit-outer-spin-butt…

van-list immediate-check设置为false无效的问题

最近在使用van-list组件开发带有tab切换的项目&#xff0c;需求是tab是后端返回的数据&#xff0c;所以获取列表数据要在tab返回之后调用&#xff0c;所以进入页面时默认不触发van-list的load事件&#xff0c;官方文档说明&#xff1a;如下图所示&#xff1a; 组件配置如图所示…

图像增强序列——Adaptive Local Power-Law Transformation for Color Image Enhancement(自适应伽马变换)

1. 参考文献2. 模型实现 % 论文&#xff1a; Adaptive Local Power-Law Transformation for Color Image Enhancement % 作者&#xff1a; Chun-Ming Tsai % % Author: HSW % Date: 2018-04-27clc; close all; clear;img imread(timg2.jpg);figure(1); imshow(img, []); title…