查看/etc/services文件,可以浏览所有网络服务名对应的端口号,由于文件列表太长,不方便查阅,就写个正则表达式的shell来指定特别的服务名称查询对应的端口号,或者根据端口号来查询对应的服务名称。

  1. #!/bin/bash 
  2.  
  3. read -p "choose service_name or port_number, 1:service, 2:port: " num 
  4.  
  5. case $num in 
  6. "1"
  7.         read -p "type the service name: " service_name 
  8.         grep "^$service_name .*" /etc/services |grep 'tcp'|awk '{print $2}'|awk 'BEGIN{FS="/"} {print "port number is " $1}' 
  9.        ;; 
  10. "2"
  11.         read -p "type the port number: " port_num 
  12.         grep "^.* $port_num/" /etc/services |grep 'tcp'|awk '{print "service name is " $1}' 
  13.         ;; 
  14. *) 
  15.         echo "1:service name 2:port number" 
  16.         ;; 
  17. esac 

首先选择1)服务名称 或者 2)端口号 来查询,输入其他则提示信息。

选择1则提示输入服务名称,然后得到对应端口号,若没有则不打印结果,

 

  1. choose service_name or port_number, 1:service, 2:port: 1 
  2. type the service name: http 
  3. port number is 80 

 

选择2则提示输入端口号,得到对应网络服务名称,若没有则不打印结果。

  1. choose service_name or port_number, 1:service, 2:port: 2 
  2. type the port number: 21 
  3. service name is ftp