[工具] Shell 批量检测服务器 TCP 端口的联通状态 (telnet 版)

介绍:

作者:朱明宇
名称:批量检测服务器 TCP 端口的联通状态
作用:批量检测服务器 TCP 端口的联通状态,并将此服务器无法联通的端口存储到 $checklist 文件里

使用方法:
1. 将此脚本和端口清单 $portlist 文件放在同一目录下
2. 端口清单 $portlist 每一个端口占用一行,格式为:<要联通端口号对应的 IP 地址>:<要联通的端口号>:<端口功能>,并和此脚本放在同一目录下
3. 在此脚本的分割线内写入相应的内容
4. 给此脚本添加执行权限
5. 执行此脚本,并将要测试的服务器 IP 地址跟在脚本的后面,例:. <脚本名> <服务器 IP 地址 1> <服务器 IP 地址 2> ……

脚本分割线里的变量:
1. portlist=tcp_ports.txt #存放要测试的 TCP 端口的文件
2. checklist=tcp_ports_checklist.txt #存放测试结果的文件

注意:
1. 此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
2. 此脚本会清空 $checklist
3. 执行此脚本前确保 telnet 命令已经安装
4. 执行此脚本可能有些慢

脚本:

#!/bin/bash

####################### Separator ########################

portlist=tcp_ports.txt
checklist=tcp_ports_checklist.txt

####################### Separator ########################

echo  > $checklist
maxnum=`cat $portlist | wc -l`

for hosts in $*
do

        echo $hosts >> $checklist

        for i in `seq 1 $maxnum`
        do

                ips=`sed -n $[i]p $portlist | awk -F':' '{print $1}'`
                ports=`sed -n $[i]p $portlist | awk -F':' '{print $2}'`
                remarks=`sed -n $[i]p $portlist | awk -F':' '{print $3}'`

                ssh $hosts "(sleep 1;) | telnet $ips $ports 2>&1" | grep 'timed out' >> $checklist

                if [ $? == 0 ];then
                        echo "`sed -n $[i]p $portlist`" >> $checklist
                        echo >> $checklist
                fi

        done

        echo >> $checklist

done

[内容] Linux 代理的设置 (全局)

内容目录:

内容一:Linux 代理环境变量的种类

内容二:环境变量的格式
2.1 没有用户和密码的格式
2.2 有用户和密码的格式

内容三;可以设置代理变量的文件

内容四:控制设置的代理
4.1 开启设置的代理
4.1.1 开启设置的代理的第一种方法
4.1.2 开启设置的代理的第二种方法
4.2 显示目前生效的代理
4.2.1 显示 http_proxy 代理
4.2.2 显示 https_proxy 代理
4.2.3 显示 ftp_proxy 代理
4.2.4 显示 socket_proxy 代理
4.2.5 显示 no_proxy 代理
4.2.6 显示 all_proxy 代理
4.3 取消目前生效的代理
4.3.1 取消 http_proxy 代理
4.3.2 取消 https_proxy 代理
4.3.3 取消 ftp_proxy 代理
4.3.4 取消 socket_proxy 代理
4.3.5 取消 no_proxy 代理
4.3.6 取消 all_proxy 代理

内容五:设置一个网络代理的案例
5.1 案例一:临时设置网络代理
5.2 案例二:永久设置网络代理
5.2.1 给配置文件添加代理配置
5.2.2 让代理配置生效
5.3 显示目前生效的代理

具体的内容:

内容一:Linux 代理环境变量的种类

1) http_proxy
2) https_proxy
3) ftp_proxy
4) socket_proxy
5) all_proxy
6) no_proxy


补充:
1) 变量可以使用通配符
2) 添加多个变量时可以使用 “,” 号分割
3) 不填种类默认以 http 协议传输

内容二:环境变量的格式
2.1 没有用户和密码的格式

export <environment variable>=http://<IP address>:<port>

2.2 有用户和密码的格式

export <environment variable>=https://<user>:<password>@<IP address>:<port>

(注意:如果密码中也有一个 “@” 符号,则需要把 “@” 符号转义一下,转义成 %40)

内容三;可以设置代理变量的文件

1) /etc/profile
2) ~/.bashrc
3) /etc/profile.d/<文件名前缀>.sh

内容四:控制设置的代理
4.1 开启设置的代理
4.1.1 开启设置的代理的第一种方法

# reboot

4.1.2 开启设置的代理的第二种方法

# source /etc/profile

4.2 显示目前生效的代理
4.2.1 显示 http_proxy 代理

# echo $http_proxy

4.2.2 显示 https_proxy 代理

# echo $https_proxy

4.2.3 显示 ftp_proxy 代理

# echo $ftp_proxy

4.2.4 显示 socket_proxy 代理

# echo $socket_proxy

4.2.5 显示 no_proxy 代理

# echo $no_proxy

4.2.6 显示 all_proxy 代理

# echo $all_proxy

4.3 取消目前生效的代理
4.3.1 取消 http_proxy 代理

# unset http_proxy

4.3.2 取消 https_proxy 代理

# unset https_proxy

4.3.3 取消 ftp_proxy 代理

# unset ftp_proxy

4.3.4 取消 socket_proxy 代理

# unset socket_proxy

4.3.5 取消 no_proxy 代理

# unset no_proxy

4.3.6 取消 all_proxy 代理

# unset all_proxy

内容五:设置一个网络代理的案例
5.1 案例一:临时设置网络代理

# export http_proxy=http://8.8.8.8:80

(补充:这里以无密码的代理 IP 和端口 8.8.8.8:8080 为例)

或者:

# setenv http_proxy=http://8.8.8.8:80

(补充:这里以无密码的代理 IP 和端口 8.8.8.8:8080 为例)

5.2 案例二:永久设置网络代理
5.2.1 给配置文件添加代理配置

# vim /etc/profile

添加以下内容:

……
export http_proxy=http://8.8.8.8:80
export https_proxy=http://admin:123@8.8.8.8:8080
export no_proxy=”localhost, 127.0.0.1, ::1″


补充:这里以设置
1) 无密码的代理 IP 和端口 http://8.8.8.8:80
2) 有密码的代理 IP 和端口 http://8.8.8.8:8080
3) 排除 localhost、127.0.0.1 和 ::1 为例
为例

(注意:如果密码中也有一个 “@” 符号,则需要把 “@” 符号转义一下,转义成 %40)

5.2.2 让代理配置生效

# source /etc/profile

5.3 显示目前生效的代理

# echo $http_proxy
# echo $https_proxy