赞
踩
有两种方式:
一种是纯shell,但是比较复杂
一种是python,比较简单
[root@tbj ~]# cat nginxport.sh #!bin/bash # 注意这种写法 NGINXPORT=(`ss -nltp | grep nginx|awk -F: '{print $2}'|awk '{print $1}'`) # 要想输入所有端口,用下面的写法 # echo ${NGINXPORT[@]} length=${#NGINXPORT[@]} printf "{\n" printf '\t'"\"port\":[" for ((i=0 ; i<${length} ; i++)) do printf '\n\t\t{' printf "\"{#NGINXPORTS}\":\"${NGINXPORT[$i]}\"}" if [ $i -lt $[${length}-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n"
结果如图:

[root@tbj ~]# cat nginxport.py #!/usr/bin/python3 # encoding: utf-8 import os import json # os.popen() 方法用于从一个命令打开一个管道。理解为执行Linux命令 port = os.popen("""ss -nltp | grep nginx|awk -F: '{print $2}'|awk '{print $1}'""") ports = [] # 提取Linux执行的结果 for i in port.readlines(): # 去掉port后面的空格 print(i.strip()) ports += [{'{#NGINXPORT}': i}] # 把数据转换为json对象 print(json.dumps({'data': ports}, indent=4, separators=(',', ':'), sort_keys=True))
结果如下:

解析:
# sort_keys:是否按照字典排序(a-z)输出,True代表是,False代表否。
# indent=4:设置缩进格数,一般由于Linux的习惯,这里会设置为4。
# separators:设置分隔符。
# 如果不想后面带有空格输出,那就可以设置成separators=(',', ':'),如果想保持原样,可以写成separators=(', ', ': ')。
# 这几个的顺序,暂时发现没什么影响
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。