stui.py 1.6 KB
Newer Older
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
1
import streamlit as st
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
2
import subprocess
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
3 4

# 创建一个标题
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
5
st.title('Python 解析域名IP地址')
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
6 7

# 创建一个文本框并接收用户输入
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
8
user_input = st.text_input('输入域名http://')
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
9 10 11

# 判断用户是否有输入,并输出一句问候语
if user_input != '':
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
12
    st.write('正在解析:,', user_input, '......')
6
622ff545dfef6c4fdb84ccec 已提交
13 14 15 16 17 18 19 20 21 22 23 24
    

    # 判断当前操作系统是centos还是ubuntu
    os_check = subprocess.check_output('cat /etc/*-release | grep -i name', shell=True).decode()
    if 'centos' in os_check.lower():
        os_name = 'CentOS'
    elif 'ubuntu' in os_check.lower():
        os_name = 'Ubuntu'
    else:
        os_name = 'Unknown'

    # 判断是否已安装dig
6
622ff545dfef6c4fdb84ccec 已提交
25
    try:
6
622ff545dfef6c4fdb84ccec 已提交
26 27
        subprocess.check_output(['which', 'dig'])
        print('dig is already installed')
6
622ff545dfef6c4fdb84ccec 已提交
28
    except subprocess.CalledProcessError:
6
622ff545dfef6c4fdb84ccec 已提交
29 30 31 32 33 34 35 36 37
        print('dig is not installed')
        # 判断操作系统,执行相应的安装命令
        if os_name == 'CentOS':
            subprocess.call(['sudo', 'yum', 'install', '-y', 'bind-utils'])
        elif os_name == 'Ubuntu':
            subprocess.call(['sudo', 'apt-get', 'install', '-y', 'dnsutils'])
        else:
            print('Unknown operating system')

6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
38

6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
39 40
    # 使用subprocess运行dig命令并获取输出
    result = subprocess.run(["dig", "+noall", "+answer", user_input ], capture_output=True)
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
41

6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
42 43 44 45 46 47
    # 将输出转换为表格
    output_lines = result.stdout.decode('utf-8').strip().split('\n')
    table = [line.split() for line in output_lines]

    # 将表格输出到streamlit界面
    st.table(table)
6
UPDATE  
622ff545dfef6c4fdb84ccec 已提交
48
else:
6
622ff545dfef6c4fdb84ccec 已提交
49
    st.write('这是一个dig的UI界面,Stremlit太强到了')