CentOS使用expect批量远程执行脚本和命令
我们有时可能会批量去操作服务器,比如批量在服务器上上传某个文件,安装软件,执行某个命令和脚本,重启服务,重启服务器等,如果人工去一台台操作的话会特别繁琐,并浪费人力。
这时我们可以使用expect,向目标服务器上发送指令去实现批量操作。
下面的例子将在centos上将一个文件,批量拷贝到其他服务商上,并执行相应的命令
1. 在centos上安装expect
yum install expect
2. 编写expect脚本 copyfilebatch.sh
下面的脚本将向内网IP为 192.168.0.102 至 192.168.0.112 的服务器分别拷贝一个rc.local文件,拷贝成功后,执行chmod命令,分别重启服务器
#!/usr/bin/expect -f set password rootpassword for {set i 102} {$i <= 112} {incr i} { set ip "192.168.0.$i" puts "$ip" spawn ssh -o StrictHostKeyChecking=no $ip set timeout 3 expect "root@$ip's password:" set timeout 3 send "$password\r" set timeout 3 send "exit\r" spawn scp /home/install/rc.local root@$ip:/etc/rc.d/rc.local set timeout 3 expect "root@$ip's password:" set timeout 3 send "$password\r" set timeout 3 send "exit\r" spawn ssh root@$ip expect { "*yes/no" { send "yes\r"; exp_continue} "*password:" { send "$password\r" } } expect "#*" #要执行的命令 send "chmod +x /etc/rc.d/rc.local\r" send "reboot\r" send "exit\r" expect eof }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
centOS6中使用crontab定时运行执行jar程序的脚本
1.编写一个简单的java程序 public class testshell { public static void main(String[] args) { int count = 0; for (String arg : args) { System.out.println("第" + (++count) + "个参数:" + arg); } } } 将上述程序打包放到centOS6中 2.编写shell脚本 #!/bin/bash export JAVA_
-
Centos 7下利用crontab定时执行任务详解
前言 cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond stop /sbin/service crond restart /sbin/service crond reload 以上1-4行分别为启动.停止.重启服务和重新加载配置. 要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond st
-
centos6.5配置ssh免秘钥登陆执行pssh命令的讲解
1.检查并安装pssh,yum list pssh 2.因为没有配置免秘钥登陆,pssh命令执行失败. [root@bogon ]# pssh -H root@192.168.245.129 -i uptime [1] 11:00:36 [FAILURE] root@192.168.245.129 Exited with error code 255 Stderr: The authenticity of host '192.168.245.129 (192.168.245.129)' can'
-
解决centos7 开机/etc/rc.local 不执行的问题
最近发现centos7 的/etc/rc.local不会开机执行,于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using thi
-
CentOS7如何执行PHP定时任务详解
前言 本文主要给大家介绍了关于CentOS7执行PHP定时任务的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 一.CentOS 7 安装crontab: yum install crontabs 语法: crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr] 参数: -e 编辑该用户的计时器设置. -l 列出该用户的计时器设置. -r 删除该用户的计时器设置. -u<用户名称> 指定要设定计
-
centos 设置定时任务执行指定脚本的方法
vim /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of mont
-
CentOS7运行.sh脚本提示syntax error: unexpected end of file的解决方法
CentOS 7运行.sh脚本提示syntax error: unexpected end of file.脚本是通过本地电脑的notepad++编辑之后用ftp上传到CentOS 7服务器上的. 错误原因: shell脚本在本地电脑编辑的,格式是dos(可以用vi编辑该shell脚本,进入命令行模式,输入:set ff 回车即可看到左下角显示fileformat=dos),在dos/window下按一次回车键实际上输入的是"回车(CR)"和"换行(LF)",而Li
-
CentOS使用expect批量远程执行脚本和命令
我们有时可能会批量去操作服务器,比如批量在服务器上上传某个文件,安装软件,执行某个命令和脚本,重启服务,重启服务器等,如果人工去一台台操作的话会特别繁琐,并浪费人力. 这时我们可以使用expect,向目标服务器上发送指令去实现批量操作. 下面的例子将在centos上将一个文件,批量拷贝到其他服务商上,并执行相应的命令 1. 在centos上安装expect yum install expect 2. 编写expect脚本 copyfilebatch.sh 下面的脚本将向内网IP为 192.168
-
在linux shell脚本中root切换到普通用户执行脚本或命令的方法
需求: 安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动 其他开机启动选项 方法:root临时降低权限 secUser=`who am i | awk '{print $1}'` #echo $secUser su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用 id -u # 结果为0,还是root用户权限 附: su --help -c, --co
-
Oracle数据库执行脚本常用命令小结
1. 执行一个SQL脚本文件 复制代码 代码如下: sqlplus user/pass@servicename<file_name.sql 或 复制代码 代码如下: SQL>start file_names 或 复制代码 代码如下: SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理. @与@@的区别是什么? @等于start命令,用来运行一个sql脚本文件. @命令调用
-
Jmeter命令行执行脚本如何设置动态参数
最近看到在Linux上折腾jmeter的人越来越多,不过即使在windows上,jmeter的脚本我还是建议用命令行来执行(降低GUI模式带来的性能损耗,不过拿jmeter来做接口测试的无所谓).做性能测试的时候,有时候可能需要不停的去设置"线程组"那个界面的参数(例如线程数.循环次数.持续时间等),而每次修改-->保存-->cmd中运行总感觉麻烦,那就找一种方法可以在命令行中直接指定参数的值. 查看相关资料实操,可以发现JMeter的测试计划在运行Sampler之前会先加
-
shell中使用expect命令进行远程执行命令脚本
expect是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程. 注意: 1.脚本的执行方法与bash shell不一样,比如:expect example.sh 2.向一个脚本传递参数时,bash shell是使用$1,$2...来接收参数的:而expect则将脚本的执行参数保存在数组$argv中,在脚本中一般将其赋值给变量:set 变量名 [lindex $argv 参数] #!/usr/bin/expect set ip [lindex $argv 0] set p
-
ssh远程执行命令方法和Shell脚本实例
写这篇博客之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,ubuntu10.04 server 亲测!! ssh执行远程操作 命令格式 复制代码 代码如下: ssh -p $port $user@$p 'cmd' $port : ssh连接端口号 $user: ssh连接用户名 $ip:ssh连接的ip地址 cmd:远程服务器需要执行的操作 准备工作 基于公私钥认证或者用户
-
linux下使用ssh远程执行命令批量导出数据库到本地
前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限
-
expect实现Linux自动登陆远程机器脚本实例
expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互过程如:ssh登录,ftp登录等交互过程,写到Shell脚本里以实现一些自动化操作. 在 Linux 下进行远程登陆的时候,总是要进行 ssh 输入账号密码,相对比较繁琐. 而有时候为了保护线上重要的机器不能随便登录,通常使用从本地登陆到公司的中间机器(跳板机)然后才能登陆到线上的机器.如果 A -> B -> C
-
使用HTTP api简单的远程执行PowerShell脚本
可能有些情况下,你不想完全体验通过PSRP(PowerShell远程处理协议)远程管理,或有需要从非Windows系统上执行一些PowerShell脚本.你可能会像我很久之前在这篇文章中写的那样直接基于WS-Man来写代码.但是那样很复杂,并且需要WS-Man和SOAP的一些知识. 我在PowerShell脚本中使用.Net HttpListener类写了个HTTP监听器.你可以非常简单地启动一个监听器的实例(需要提升权限监听网络),现在你可以执行任意的PowerShell命令了,它还可以返回多
-
php5系列的apache远程执行漏洞攻击脚本
php5.x系列/apache远程执行漏洞及攻击脚本以下为相关代码,请文明使用... 复制代码 代码如下: /* Apache Magica by Kingcope *//* gcc apache-magika.c -o apache-magika -lssl *//* This is a code execution bug in the combination of Apache and PHP.On debian and Ubuntu the vulnerability is presen
随机推荐
- python实现udp数据报传输的方法
- 重温JavaScript中的正则表达式 js学习笔记
- JavaScript阻止表单提交方法(附代码)
- Kafka 常用命令行详细介绍及整理
- 浅谈Java方法的重载
- 基于PHP给大家讲解防刷票的一些技巧
- C++实现基数排序的方法详解
- Docker在CentOS7下不能下载镜像timeout的解决办法(图解)
- Python实现单词拼写检查
- linux Shell入门:掌握Linux,OS X,Unix的Shell环境
- Python使用scrapy抓取网站sitemap信息的方法
- android全屏去掉title栏的多种实现方法
- 日常收集常用SQL查询语句大全
- 解决jQuery上传插件Uploadify出现Http Error 302错误的方法
- jQuery判断iframe中元素是否存在的方法
- jquery 学习笔记一
- React中使用collections时key的重要性详解
- Android弹幕框架 黑暗火焰使基本使用方法
- Java异常区分和处理的一些经验分享
- Java实现求解一元n次多项式的方法示例