linux 带ssh和scp功能的集群控制脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/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

  

posted @   a戴姆勒  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示