zoukankan      html  css  js  c++  java
  • 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 "33[31m执行命令 : "$to_input" 33[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 "33[31m传输的内容 : "${to_scp#*/}" 33[0m"
            if [[ ${to_scp#*/} == exit ]];then
                    break
            else
            scp_command "${to_scp#*/}"
            echo "------------------------------------------------------------------------->"
            fi
            done
            ;;
            exit)
                    break
            ;;
            *)
            echo -e "33[35m输入的不是规定的参数,取消执行命令!
    (请输入数字1或2操作指令bash/scp,退出请输入数字:" 3/exit ")33[0m"
    
            echo ""
            echo "=====================================================>"
            esac
    done
    

      

  • 相关阅读:
    [转]Spring的IOC原理[通俗解释一下]
    自我介绍
    什么是存储过程
    Linux 之 最常用的20条命令
    [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
    mysql 多表连接
    正则表达式
    postman 测试API
    [转]mysql 视图
    数据库 修改统一显示时间
  • 原文地址:https://www.cnblogs.com/sunju/p/15155640.html
Copyright © 2011-2022 走看看