shell 获得本机IP和free端口

本文介绍了一个简单的Bash脚本,该脚本能够查找并返回指定范围内的第一个空闲TCP端口。通过解析`ifconfig`命令的输出来获取IP地址,并使用`/dev/tcp`的方法检查端口是否被占用。
#!/bin/bash
IPaddr=`ifconfig | grep inet\\\\s | grep -v "127.0.0." | sed "s/addr://g"| awk '{print $2}'`
function getfreeport()
{
    IPaddr=$1
    first=$2
    last=$3
    for (( port = $first; port <= ${last}; port++ ))
        do
            (echo > /dev/tcp/$IPaddr/$port) &> /dev/null
            if [ $? != 0 ]
            then
                 echo $port
                 break
            fi
        done
}
port=$(getfreeport $IPaddr 22 100)
echo "free port=${port}"

### 获取系统 CPU 内存使用情况的 Shell 脚本 以下是一个完整的 Shell 脚本示例,用于获取系统的 CPU 使用率、内存使用情况,并将结果发送到指定的 IP 地址(通过 HTTP POST 请求实现)。 该脚本使用 `top` 命令提取 CPU 使用信息,使用 `free` 命令获取内存使用情况,最后通过 `curl` 将数据以 JSON 格式发送到远程服务器。这种方式适用于需要将监控数据集中上报的场景[^3]。 ```bash #!/bin/bash # 定义目标服务器地址端口 SERVER_IP="192.168.1.100" SERVER_PORT="8080" # 获取本地服务器IP地址 LOCAL_IP=$(hostname -I | awk '{print $1}') # 获取当前日期时间 CURRENT_TIME=$(date +"%Y-%m-%d %T") # 获取CPU使用情况 CPU_INFO=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2 + $4 "%"}') # 获取内存使用情况 MEM_INFO=$(free -m | grep Mem | awk '{printf "%.2f%%", ($3/$2)*100}') # 构建JSON格式的数据 JSON_DATA="{\"ip\":\"$LOCAL_IP\",\"time\":\"$CURRENT_TIME\",\"cpu_usage\":\"$CPU_INFO\",\"memory_usage\":\"$MEM_INFO\"}" # 发送POST请求将数据上传至指定IP的服务端点 curl -s -X POST http://$SERVER_IP:$SERVER_PORT/api/system-report -H "Content-Type: application/json" -d "$JSON_DATA" ``` #### 脚本说明: - **获取本地 IP**:通过 `hostname -I` 提取本机 IP 地址,用于标识数据来源。 - **获取 CPU 使用率**:使用 `top -b -n 1` 执行一次快照模式的 top 输出,并通过 `grep` `awk` 提取 CPU 总体使用百分比[^3]。 - **获取内存使用率**:使用 `free -m` 显示内存信息,并通过 `awk` 计算已用内存占总内存的比例。 - **构建 JSON 数据**:将所有信息整合为结构化 JSON 数据,便于服务端解析。 - **发送 HTTP 请求**:使用 `curl` 向指定的 HTTP 接口发送 POST 请求,将系统状态信息上传到中心服务器。 > 注意:确保目标服务器上运行了可以接收此类数据的服务,例如一个简单的 Flask Web 服务或其他 REST API 实现。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值