linux 带ssh和scp功能的集群控制脚本
#!/bin/bash #创建一个以.sc结尾的文件,把要操作的主机按顺序填写进去,多个IP另起一行顶格填写例如: #192.168.0.1 #192.168.0.2 #确保当前操作脚本的主机,已经可以免密到被操作主机,如未完成请自行解决。 do_command() { hosts=`sed -n '/^[^#]/p' *.sc` for host in $hosts do echo "" echo HOST $host ssh $host "$to_input" done return 0 } scp_command() { hosts=`sed -n '/^[^#]/p' *.sc` for host in $hosts do echo "" echo HOST $host scp -r ${to_scp#*/} $host:/tmp done return 0 } PS3="选择要执行的命令按数字: 1)bash 或 2)scp (退出请按 3)exit 或 Ctrl+c): " select to_chose in ssh scp exit ;do case $to_chose in ssh) while true;do read -ep "输入要执行的Linux命令例:ls,df,free...(回到上一级输入"exit"):" to_input echo "------------------------------------------------------------------------->" echo -e "\033[31m执行命令 : "$to_input" \033[0m" if [[ $to_input == exit ]];then break else do_command "$to_input" echo "------------------------------------------------------------------------->" fi done ;; scp) while true;do echo "当前目录(回到上一级输入"exit"): " ls read -ep "请输入要传送的文件或目录的名字(多个文件或目录以空格分隔):" to_scp #可以用ls查看非当前目录要传送的文件或目录,可用tab键查看内容和补全功能。 echo "------------------------------------------------------------------------->" echo -e "\033[31m传输的内容 : "${to_scp#*/}" \033[0m" if [[ ${to_scp#*/} == exit ]];then break else scp_command "${to_scp#*/}" echo "------------------------------------------------------------------------->" fi done ;; exit) break ;; *) echo -e "\033[35m输入的不是规定的参数,取消执行命令! (请输入数字1或2操作指令bash/scp,退出请输入数字:" 3/exit ")\033[0m" echo "" echo "=====================================================>" esac done