查看/etc/services文件,可以浏览所有网络服务名对应的端口号,由于文件列表太长,不方便查阅,就写个正则表达式的shell来指定特别的服务名称查询对应的端口号,或者根据端口号来查询对应的服务名称。
- #!/bin/bash
- read -p "choose service_name or port_number, 1:service, 2:port: " num
- case $num in
- "1")
- read -p "type the service name: " service_name
- grep "^$service_name .*" /etc/services |grep 'tcp'|awk '{print $2}'|awk 'BEGIN{FS="/"} {print "port number is " $1}'
- ;;
- "2")
- read -p "type the port number: " port_num
- grep "^.* $port_num/" /etc/services |grep 'tcp'|awk '{print "service name is " $1}'
- ;;
- *)
- echo "1:service name 2:port number"
- ;;
- esac
首先选择1)服务名称 或者 2)端口号 来查询,输入其他则提示信息。
选择1则提示输入服务名称,然后得到对应端口号,若没有则不打印结果,
- choose service_name or port_number, 1:service, 2:port: 1
- type the service name: http
- port number is 80
选择2则提示输入端口号,得到对应网络服务名称,若没有则不打印结果。
- choose service_name or port_number, 1:service, 2:port: 2
- type the port number: 21
- service name is ftp