start_socat.sh 887 B

12345678910111213141516171819202122232425262728293031
  1. # 终止所有 socat 进程
  2. kill -9 $(pgrep -f "^socat$")
  3. sleep 3
  4. # 获取本地主机的 IP 地址
  5. host=$(ifconfig eth0 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p')
  6. echo "扫描 IP 范围 $host"
  7. # 扫描网络中的活动主机
  8. for ip in $(nmap -n -sn --unprivileged $host/24 -oG - | awk '/Up$/{print $2}')
  9. do
  10. # 获取 IP 地址的最后一个字节
  11. bia=$(echo $ip | awk -F. '{print $4}')
  12. # 跳过 x.x.x.1 和本地主机的地址
  13. if [ "$bia" -eq "1" ] || [ "$ip" == "$host" ]; then
  14. continue
  15. fi
  16. echo "建立 socat 连接到 $ip"
  17. # 设置第一个端口并启动 socat 进程
  18. base1=50000
  19. port1=$((base1 + bia))
  20. nohup socat -v tcp-listen:$port1,fork,reuseaddr tcp:$ip:22 >/dev/null 2>&1 &
  21. # 设置第二个端口并启动 socat 进程
  22. base2=58000
  23. port2=$((base2 + bia))
  24. nohup socat -v tcp-listen:$port2,fork,reuseaddr tcp:$ip:8000 >/dev/null 2>&1 &
  25. done