脚本要求:
1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
当前我们只实现免密钥登陆主机
3)通过函数封装每个功能
4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
5)支持输入一批主机免密钥,使用数组 实现
##############################
#Author:席志敏
#Create_Time:2022-08-31
#Versios:1.0
#Mail:18935187650@189.cn
#Description:老火车
##############################
#!/bin/bash
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = 0 ] ;then
${SETCOLOR_SUCCESS}
echo -n $" ok "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
#实现ssh自动登录
ssh_host() {
USER=root
PASSWORD=123456
while true;do
read -p "请输入ip(q退出):" IP
[[ $IP =~ ^(q|Q)$ ]] && exit;
[[ $IP =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] || { echo "IP不合法,请重新输入";continue; }
break;
done
#read -p "请输入用户名:" USER
#read -p "请输入密码:" PASSWORD
expect <<EOF
set timeout 20
spawn ssh-copy-id $IP
expect {
"yes/no" { send "yes\n";exp_continue }
"password" {send "$PASSWORD\n" }
}
expect eof
EOF
#while true;do
read -p "是否继续登录$IP(y/q):" Y
[[ $Y =~ y|Y ]] && ssh $IP || continue;
[[ $Y =~ q|Q ]] && break;
#done
#expect <<EOF
#set timeout 20
#spawn ssh $IP
#expect {
# "root@$IPs password" { send "123456\n" }
#}
#expect eof
#EOF
}
install_mysql(){
yum install -y mysql
}
install_apache(){
yum install -y httpd
}
#菜单
menu() {
while true;do
PS3="请输入指令(1-4):"
select MENU in 安装mysql 安装apache 免密登录远程主机 退出脚本;do
case $REPLY in
1)
install_mysql
break
;;
2)
install_apache
break
;;
3)
ssh_host
break
;;
4)
echo 退出!
exit
;;
esac
done
done
}
menu