shell脚本之自动化管理
做运维的工作,大家都明白有一些的服务器部署不可能打开每台服务器部署一边,一些工具可以做到对多台电脑的同时部署。我在看到shell的时候就想到shell脚本是否可以进行一些简单的部署,比如,下载,查看服务器状态等。有了一点想法和实现步骤与大家分享一下。
-
我以两台CentoS 7 同时以桥接模式链接网络
-
对linux进行名字的更改以便于查看变化
-
hostnamectl set-hostname computer1 (两台同样操作名字更换即可)
-
vi /etc/hosts
-
重启 reboot
-
-
建立linux之间的信任关系
- 先在主机computer1上使用命令创建密钥
ssh-keygen -t rsassh-keygen -t rsa(连续回车) - 把公钥拷贝到computer2
scp -r /root/.ssh/id_rsa.pub 192.168.0.179:/root/.ssh/authorized_keys - ssh [email protected](登陆到另台服务器)
- 重复1,2操作注意更换ip
- exit退出登陆
- 先在主机computer1上使用命令创建密钥
-
写shell脚本(今天先这样明天修改)
#!/bin/bash
#命令保存路径
execute_dir=/root/execute/
#判断是否由这个路径,没有就创建
[ -d $execute_dir ] || mkdir -p $execute_dir
#判断被部署的服务器是否由这个路径,如果没有就创建
ssh [email protected] "
execute_dir=/root/execute/
[ -d $execute_dir ] || mkdir -p $execute_dir"
#保存命令的路径
execute_dir=/root/execute/execute.txt
while [ True ]
do
read -p "请输入你的选择1.系统信息2.任务部署3.其它" select
case "$select" in
1)
read -p "请输入你要执行的操作" order
echo "$order">$execute_dir
#把需要执行的命令分配到各个子服务器
scp -r $execute_dir 192.168.0.179:$execute_dir
ssh [email protected] "
execute_dir=/root/execute/execute.txt
cat $execute_dir
"
;;
2)
order="ls"
while [ $order != "-1" ]
do
read -p "请输入你要执行的操作-1退出" order
echo "$order">$execute_dir
#把需要执行的命令分配到各个子服务器
scp -r $execute_dir 192.168.0.179:$execute_dir
ssh [email protected] "
execute_dir=/root/execute/execute.txt
. $execute_dir>>/dev/null
if [ $? -eq 0 ]
then
echo "任务完成。。。"
else
echo "部署失败。。。"
fi
"
done
;;
3)
echo "正在完善,敬请期待。。。"
;;
esac
done