是否可以编写Python(iOS)程序来允许/执行对RaspberryPi的命令?

是否可以编写Python(iOS)程序来允许/执行对RaspberryPi的命令?,python,raspberry-pi3,vpn,suricata,ids,Python,Raspberry Pi3,Vpn,Suricata,Ids,我目前正在进行我的高级Capstone项目,在该项目中,我将编写一个有点基本的程序,允许我的iPhone6设备上的自定义接口远程控制或向在我家RaspberryPi(3B+)VPN中建立的NIDS(Suricata)发出关键命令。然而,我的问题是,鉴于我将其用作VPN网络中的一个设备,编写上述程序是否可行,该程序允许对Pi ID上的基本功能/响应选项进行远程访问控制。主要问题是在出现异常时建立到iOS设备的远程信令,并允许其响应并在NID上执行根级别的命令 如果它有用的话,我目前正在移动设备上使

我目前正在进行我的高级Capstone项目,在该项目中,我将编写一个有点基本的程序,允许我的iPhone6设备上的自定义接口远程控制或向在我家RaspberryPi(3B+)VPN中建立的NIDS(Suricata)发出关键命令。然而,我的问题是,鉴于我将其用作VPN网络中的一个设备,编写上述程序是否可行,该程序允许对Pi ID上的基本功能/响应选项进行远程访问控制。主要问题是在出现异常时建立到iOS设备的远程信令,并允许其响应并在NID上执行根级别的命令

如果它有用的话,我目前正在移动设备上使用Pythonista作为运行时环境,并已将VPN的连接方法设置为UDP,但我不确定启用SSH是否有帮助。我对如何操作与网络连接相关的编程有相当基本的了解。我非常感谢所有的帮助

from tkinter import *
window=Tk()
window.geometry("450x450")
window.title("IDS Response Manager")

label1=Label(window,text="Intrusion Response Options",fg= 'black',bg ='white',relief="solid",font=("times new roman",12,"bold"))
label1.pack()

button1=Button(window,text="Terminate Session",fg='white', bg='brown',relief=RIDGE,font=("arial",12,"bold"))
button1.place(x=50,y=110)      #GROOVE ,RIDGE ,SUNKEN ,RAISED

button2=Button(window,text="Packet Dump",fg='white', bg='brown',relief=RIDGE,font=("arial",12,"bold"))
button2.place(x=220,y=110)      #GROOVE ,RIDGE ,SUNKEN ,RAISED

button3=Button(window,text="Block Port",fg='white', bg='brown',relief=RIDGE,font=("arial",12,"bold"))
button3.place(x=110,y=170)      #GROOVE ,RIDGE ,SUNKEN ,RAISED


这里显示了非常基本的选项。

您可以使用带有API的flask服务器,您可以向其发送post请求。然后可以发送get请求以接收命令。要托管API,请查看Heroku(可用的免费层,功能非常强大,已经配置了
app\u name.herokuapp.com

向上搜索以发送包含您用于构建应用程序的技术的post请求。将关键字command与/Send_命令以及密码“password_here”(可更改为您想要的任何内容)一起发送到/Send_命令

Python:

模块:烧瓶(服务器)、请求(客户端)

服务器代码:

从烧瓶导入烧瓶
app=烧瓶(名称)
命令=[]
@app.route('/get_命令',方法=['get'])
def get_命令():
tmp_commands=命令[:]
命令=[]
返回{'commands':tmp_commands}
@app.route('/send_commands',methods=['POST'])
def send_命令():
if request.json['password']==“此处为密码”:
commands.append(request.json['command'])
返回{'worked':True}
其他:
返回{'worked':False}
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
客户端代码:

import requests 
  
URL = "url_here/get_commands"

commands = requests.get(url = URL) 

for command in commands:
    os.system(command)