『BASH』

一、找出ip addr命令结果中本机所有的IPv4地址

BASH:

f@z ~/py $ ip addr | grep -oP '(?:\d+\.){3}\d+/\d+'
127.0.0.1/8
172.18.16.4/24

Python3:

f@z ~/py $ cat ipaddr.py 
#!/usr/bin/python3
#-*- coding='utf-8' -*-
import re
import subprocess
ipb = subprocess.check_output('ip addr', shell=True)
ipaddr = ipb.decode('utf-8')
ip1,ip2 = re.findall(r'(?:\d+\.){3}\d+/\d+', ipaddr)
print(ip1, ip2)

f@z ~/py $ python3 ipaddr.py 
127.0.0.1/8 172.18.16.4/24

二、列出inode使用率最大的三个分区,列出分区名称、inode使用率

BASH:

f@z ~ $ df -i | sed -r 's/ +/ /g' | cut -d' ' -f1,5 | sort -rn -k2 | head -n3
/dev/root 3%
tmpfs 1%
tmpfs 1%

Python3:

f@z ~/py $ cat df.py 
#!/usr/bin/env python3
#-*- coding=utf-8 -*-
import re
import subprocess
import heapq
a = re.split('\n', subprocess.getoutput('df -i'))
b = []
c = []
for x in a[1:]:
    z = re.split('\s+', x, 5)
    b.append(z[0])
    c.append(z[-2])
d = dict(zip(b,c))
print(heapq.nlargest(3, d.items(), key=lambda x: x[1]))

f@z ~/py $ python3 df.py 
[('/dev/root', '3%'), ('shm', '1%'), ('tmpfs', '1%')]

三、查找UID最大的用户名、UID、SHELL

BASH:

f@z ~/py $ sort -nr -t ':' -k 3 passwd | head -n 1 | cut -d ':' -f '1,3,7'
nobody:65534:/bin/false

Python3:

f@z ~/py $ cat pw.py 
#!/usr/bin/env python3
#_*_ coding:UTF-8 _*_
import re
with open('/home/f/py/passwd', 'r') as f:
    a = f.readlines()
    b = []
    for x in a:
        b.append(re.split(':', x))
    c = max(b, key=lambda s: int(s[2]))
    name,_,uid,*_,shell = c
    print(name, uid, shell.strip())

f@z ~/py $ python3 pw.py 
nobody 65534 /bin/false

四、查出/tmp的权限并以数字方式显示

BASH:

f@z ~/py $ stat /tmp/ | sed -n '4p' | grep -oP '(?<=\()\d{3,4}(?=/)'
1777

Python3:

f@z ~/py $ cat tmpperm.py 
#!/usr/bin/env python3
#-*- coding=utf-8 -*-
import re
import subprocess
a = re.split('\n', subprocess.getoutput('stat /tmp'))[3]
print(re.findall('(?<=\()\d{3,4}(?=/)', a))

f@z ~/py $ python3 tmpperm.py 
['1777']

五、统计当前本机连接的远程主机IP数量,并按从大到小排列

Python3&BASH:

z py # cat ss.py && python3 ss.py && ss -tun | grep -oP '(?:\d+\.){3}\d+(?=:\d+\s*$)' | sort | uniq -c | sort -nr

#!/usr/bin/env python3
#-*- coding='utf-8' -*-
import re
import subprocess
a = re.findall(r'(?:\d+\.){3}\d+(?=:\d+\s*)', subprocess.getoutput('ss -tun'))[1::2]
b = set(a)
c = []
for x in b:
    c.append(a.count(x))
d = dict(zip(b,c))
print(sorted(d.items(), key=lambda z: z[1], reverse=True))

Python3输出:
[(
'74.125.23.102', 3), ('42.121.254.229', 2), ('74.125.23.100', 1), ('220.181.105.153', 1)]

BASH输出:
3 74.125.23.102 2 42.121.254.229 1 74.125.23.100 1 220.181.105.153
原文地址:https://www.cnblogs.com/hadex/p/5738540.html