批量操作服务器shell


背景:最近需要对多台服务器做环境的初始化,手动一台一台操作,太花时间,觉得用shell 完成这些重复性的工作

免密登陆,操作服务器

前提:系统含有ssh 生成的公钥
实现内容:
1、通过expect 监听命令,并对含有关键字的输出作出对应的响应。
2、通过ssh-copy-id 把系统中的公钥拷贝到目标系统中,从而使系统可以不用输入密码就能登陆目标系统。
3、为了避免已经上传过公钥的的目标服务器重复上传,通过判断~/.ssh/known_hosts文件是否含有目标服务器ip即可。
4、通过ssh 登陆服务器后可以在两个eeooff之间编写操作服务器的脚本
文件shell1.sh

#!/bin/bash
user=$1
ip=$2
password=$3

if [ `grep -c $ip  ~/.ssh/known_hosts` -eq 0 ];then  
   echo ssh-copy-id start!
	expect << EOF
		spawn ssh-copy-id $user@$ip
		expect {
			"yes/no" { send "yes\r"; exp_continue }
			"password:" { send "$password\r" }
		}
	expect eof
EOF
fi 
ssh $user@$ip > /dev/null 2>&1 << eeooff
#对服务器进行各种操作
eeooff
echo done!

读取文件

目的:由于服务器过多,需要通过读取配置文件来做批量的操作
前提:配合免密登陆和ssh
实现内容:按行读取文件,对$1通过,进行字符串的截取作为参数执行参数$2,中的shell
文件格式实例:user,ip,password,shell1.sh
文件shell2.sh

#/bin/bash
filepath=$1
shell_sh=$2
cat $filepath | while read line 
do
	echo $line start!
	params=(`echo $line | tr ',' ' '` )
	sh $shell_sh ${params[0]} ${params[1]} ${params[2]}
done

注:shell 脚本使用的时候,配置文件,shell1.sh和shell.sh 放在同一个目录下即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 SSH 和 Shell 脚本实现批量重启服务器操作,具体步骤如下: 1. 编写一个 Shell 脚本,使用 SSH 连接到需要重启的服务器并执行重启命令。 ``` #!/bin/bash # 定义需要重启的服务器列表 servers=(server1 server2 server3) for server in "${servers[@]}" do echo "Restarting $server..." ssh user@$server "sudo reboot" done echo "All servers have been restarted." ``` 2. 将脚本保存为 restart_servers.sh,并设置可执行权限。 ``` chmod +x restart_servers.sh ``` 3. 在终端中执行脚本。 ``` ./restart_servers.sh ``` 4. 输入 SSH 登录密码,等待脚本执行完毕即可。 ### 回答2: 要批量重启服务器,可以使用Shell脚本来实现。Shell脚本是一种通用的脚本语言,在Unix和Linux系统中常用来自动化任务。 首先,我们需要编写一个Shell脚本文件,可以使用任何文本编辑器创建一个扩展名为.sh的文件。以下是一个简单的示例: ```bash #!/bin/bash # 定义需要重启的服务器列表 servers=("server1" "server2" "server3") # 循环遍历服务器列表 for server in "${servers[@]}" do # 执行重启命令(此处为示例,实际应根据需要调整) ssh $server "sudo systemctl restart <service_name>" done echo "服务器重启完成!" ``` 在脚本中,我们首先定义了一个需要重启的服务器列表,可以根据实际情况添加或删除服务器。然后,使用for循环遍历服务器列表,在每次循环中使用ssh命令登录到服务器,并执行相应的重启命令(在示例中使用systemctl命令重启服务,需要替换<service_name>为实际的服务名)。最后,输出一个完成提示信息。 保存脚本文件后,可以使用命令`chmod +x script.sh`将脚本文件设置为可执行权限。然后,运行脚本`./script.sh`即可批量重启服务器。 需要注意的是,执行ssh命令需要服务器提前配置好ssh免密登录,以便脚本无需手动输入密码即可登录到服务器进行操作。此外,重启命令需要根据实际情况进行调整,以确保正确地重启服务器。 这是一个简单的批量重启服务器Shell脚本实现方法,根据具体需求,还可以进一步添加错误处理、日志记录等功能。 ### 回答3: Shell脚本是一种可以在Unix和Linux系统中执行的脚本语言,使用它可以批量自动化地执行一系列命令。若想批量重启服务器,可以编写一个Shell脚本来实现。 首先,需要编写一个循环结构,用来遍历服务器列表,并执行重启操作。可以将服务器列表保存在一个文件中,每行一个服务器的IP地址或主机名。 然后,可以使用Shell脚本中的SSH命令来远程连接服务器,并执行重启命令。SSH命令可以通过输入用户名、密码或SSH密钥来进行身份验证。 接下来,可以使用Shell脚本中的循环语句来逐个遍历服务器列表,并执行重启命令。在循环中,可以使用SSH命令连接到当前服务器,并执行重启命令,然后断开连接。 最后,可以在脚本中添加错误处理,以确保在重启过程中出现错误时能够进行适当的处理。例如,可以在服务器无法连接或重启失败时记录日志,并传递适当的错误代码。 编写好批量重启服务器Shell脚本后,可以通过在终端中运行脚本来执行。执行脚本后,它将依次连接到每个服务器,并执行重启命令。通过这种方式,可以轻松、高效地批量重启服务器。 值得注意的是,在编写和执行脚本时,请确保仅在必要情况下才重启服务器,并确认已做好相应的备份和风险评估工作,以避免可能的数据丢失或其他风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值