代码拉取完成,页面将自动刷新
同步操作将从 hxsaj/tools_shell 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env bash
# ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
# Function :CentOS7.X 二进制安装mysql
# Platform :RedHatEL7.x Based Platform
# Version :1.01
# Date :2022-10-14
# Author :mugoLH
# Contact :hxsaj@126.com
# Company :liando
# depend on:
# ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
# 函数列表 Function list
# ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
info_p(){ printf "\e[1;32;40m%-12s\e[0m %-1s\n\e[0m" "${1}" "${2}" >&1 ;}
tips_p(){ printf "\e[1;36;40m%-5s\e[0m %-1s\n\e[0m" "${1}" "${2}" >&1 ;}
error_p(){ printf "\e[1;35;40m%-12s\e[0m %-1s\n\e[0m" "${1}" "${2}" >&1 ;}
# 变量列表 Variable list
HOST_FILE=./server.list
# 打印可登录的服务器,输入 q 或者 Q 退出选择
print_host(){
HOST_FILE=${1}
if [ ! -f ${HOST_FILE} ];then
error_p "[ WARNING ]:" "不存在主机文件 ${HOST_FILE},请检查!"
return $?
fi
egrep -v "^$|^#" ${HOST_FILE} |awk '{print$1,$2,$3,$4}' |awk '$0=NR") "$0' |\
awk '
BEGIN{
print " --------------------------------------------------------------------------------------------------";
print " | 序号 | IP | 主机名 | 角色/说明 | 地域/机房/局点 |";
print " --------------------------------------------------------------------------------------------------";
}
{
printf " %-4s %-14s %-20s %-30s %-20s\n",$1,$2,$3,$4,$5;
}
END{
print " --------------------------------------------------------------------------------------------------";
}'
# 获取主机个数
hosts_nu=$(egrep -v "^$|^#" ${HOST_FILE} | wc -l)
# 选择登录的主机
read -t 30 -p " 选择需要登录的服务器[默认为 1]:" Choices_Server
if [ ! ${Choices_Server} ];then
Choices_Server=1
fi
# 判断输入的合法性(必须是数字,并且是主机个数之内)
if echo ${Choices_Server} |grep -q "^[0-9]" ;then
if [ ${Choices_Server} -le ${hosts_nu} ] && [ ${Choices_Server} -gt 0 ];then
user_h=$(egrep -v "^$|^#" ${HOST_FILE} | sed -n "${Choices_Server}p" | awk '{print$5}')
port_h=$(egrep -v "^$|^#" ${HOST_FILE} | sed -n "${Choices_Server}p" | awk '{print$6}')
host_h=$(egrep -v "^$|^#" ${HOST_FILE} | sed -n "${Choices_Server}p" | awk '{print$1}')
ssh -p ${port_h} ${user_h}@${host_h}
else
clear && error_p "[ WARNING ]:" "服务器序号选择错误,请重新选择:"
print_host ${HOST_FILE}
fi
elif [[ ${Choices_Server} == "q" ]] || [[ ${Choices_Server} == "Q" ]] ; then
exit
else
clear && error_p "[ WARNING ]:" "请输入服务器序号:"
print_host ${HOST_FILE}
fi
}
# IP检查合法性
function check_ip() {
IP=$1
if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
FIELD1=$(echo $IP|cut -d. -f1)
FIELD2=$(echo $IP|cut -d. -f2)
FIELD3=$(echo $IP|cut -d. -f3)
FIELD4=$(echo $IP|cut -d. -f4)
if [ $FIELD1 -le 255 -a $FIELD2 -le 255 -a $FIELD3 -le 255 -a $FIELD4 -le 255 ]; then
echo "ok"
else
echo "no"
fi
else
echo "error"
fi
}
# 检查参数情况
if [ $# -eq 1 ];then
# 检查参数是否为合法的IP
IP_or=$(check_ip ${1})
if [[ ${IP_or} = "ok" ]];then
ssh root@${1}
# 检查参数是否在主机清单文件中存在
elif [[ -n $(egrep -v "^$|^#" ${HOST_FILE} | grep ${1}) ]] ;then
user_h=$(egrep -v "^$|^#" ${HOST_FILE} | awk "/${1}/{print\$5}")
port_h=$(egrep -v "^$|^#" ${HOST_FILE} | awk "/${1}/{print\$6}")
host_h=$(egrep -v "^$|^#" ${HOST_FILE} | awk "/${1}/{print\$1}")
ssh -p ${port_h} ${user_h}@${host_h}
# 参数不是合法ip,也不在主机清单中,就报错
else
error_p "[ ERROR ]:" "输入主机或IP错误!"
fi
elif [ $# -eq 0 ];then
# 无参数的情况:直接打印可以登录的服务器
clear && print_host ${HOST_FILE}
else
# 输入参数超过 1 个的情况
error_p "[ ERROR ]:" "只接受 0-1个参数,参数为需要连接的【 主机名 | IP | 缩写 】"
fi
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。