欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux shell 通过nc编写的服务端和客户端

程序员文章站 2022-01-13 10:57:10
...

    在运维中总是需要对多台服务器进行服务的启停操作,通过预先编写的脚本执行,但是如何远程调用就是一个比较头疼的问题。

现在很多Linux服务器都自带了nc命令可以进行服务器间的信息交流。于是就有了打算通过nc工具来执行预定的命令,好处是不用输入保存密码,在很多嵌入式设备上也可以使用。

首先是测试nc是否可以监听端口,因为很多嵌入式Linux系统并不能监听。


 执行以下命令测试:

nc -l  -d 10356

 能执行就可以运行服务端

#!/bin/bash
while true ;do 
ret=`nc -l -d 10356`
echo ret=$ret
    if [[ $ret == "exit" ]]; then
        break
    fi

    case $ret in
        "yes")
            echo `date +%F-%T`" You choose yes"
            ;;
        "no")
            echo `date +%F-%T`" You choose no"
            ;;
        *)
            echo `date +%F-%T`" You choose none"
            ;;
    esac

done

 一个while循环直接可以处于后台模式的监听执行操作

而一个选择代码块则可以直接执行对应的代码

当客户端输入exit时退出这个脚本,当然很多时候没有必要。

这样可以直接把里面的执行代码改为需要执行的命令和脚本就可以了。


客户端代码

#!/bin/sh
HOST=192.168.20.66
PORT=10356

send(){
echo $1|nc $2 $3
 if [[ $? <> 0 ]];then
 echo "发送未成功!"
 fi
}

send yes $HOST $PORT 

send no $HOST $PORT 

send test $HOST $PORT 

 对于客户端的代码就没有这么多要求了,基本上是个Linux都能用上。

这个也只是简化了一些自定义的代码。

后期应该会基于此编写能互相传输和执行命令的脚本。

相关标签: 网络