diff --git a/ssh.sh b/ssh.sh new file mode 100644 index 0000000..c19e744 --- /dev/null +++ b/ssh.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# 检查并安装 sshpass +if ! command -v sshpass &> /dev/null; then + echo "sshpass could not be found, attempting to install..." + apt-get update && apt-get install -y sshpass +fi + +# 服务器信息文件路径 +server_info_file="ssh.txt" + +# 检查服务器信息文件是否存在 +if [ ! -f "$server_info_file" ]; then + echo "Server information file not found: $server_info_file" + exit 1 +fi + +# 循环,直到用户决定停止 +while true; do + # 获取用户输入的命令 + echo "Please enter the script/command you want to execute on all servers:" + read -r command + + # 如果用户没有输入命令,则询问是否退出 + if [ -z "$command" ]; then + echo "No command entered. Do you want to exit? (y/n)" + read -r answer + if [ "$answer" = "y" ]; then + break + else + continue + fi + fi + + # 读取服务器信息并执行命令 + while IFS=' ' read -r ip port user password; do + echo "Connecting to $ip..." + sshpass -p "$password" ssh -o StrictHostKeyChecking=no -p "$port" "$user@$ip" "$command" + done < "$server_info_file" + + # 询问用户是否继续输入另一个命令 + echo "Do you want to execute another script/command? (y/n)" + read -r answer + if [ "$answer" != "y" ]; then + break + fi +done + +echo "Script execution completed."