Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import os
- import time
- import sys
- import psutil
- import datetime
- import uptime
- def get_ip_address():
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s.connect(("8.8.8.8", 80))
- return s.getsockname()[0]
- host = get_ip_address()
- port = 6969
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s.bind((host, port))
- shutdownState = 0
- if os.path.exists("pid.txt"):
- os.remove("pid.txt")
- pid = os.getpid()
- pidFile = open("pid.txt", "wt")
- pidFile.write(str(pid))
- pidFile.close()
- pidFile = open("pid.txt")
- print()
- print(pidFile.read())
- def dataSend(data):
- print("Sending: " + data)
- logFile.write("\nSending: " + data)
- s.sendto(data.encode('utf-8'), addr)
- logFile.close()
- print("Server Started")
- print("Server IP: " + str(host))
- print("Server Port: " +str(port))
- while True:
- logFile = open("log.txt", "a")
- now = datetime.datetime.now()
- currentTime = now.strftime("%H:%M:%S")
- data, addr = s.recvfrom(1024)
- #onlineMessage = "Server Online."
- #s.sendto(onlineMessage.encode('utf-8'), addr)
- data = data.decode('utf-8')
- battery = psutil.sensors_battery()
- plugged = battery.power_plugged
- percent = battery.percent
- pluggedIn = "Plugged In" if plugged else "Not Plugged In"
- print("Message from: " + str(addr))
- print("At: " + currentTime)
- print("From connected user: " + data)
- logFile.write("\nMessage from " + str(addr))
- logFile.write("\n[" + currentTime + "] " + data)
- #Battery Management
- if not plugged:
- if percent < 30:
- print("Battery Critical")
- data = data + "\nBattery getting very low"
- elif percent < 50:
- print("\nBattery Low")
- data = data + "\nBattery getting low"
- data = data.upper()
- if data == "IP":
- dataSend(host)
- elif data == "MYIP":
- dataSend(str(addr))
- elif data == "UPTIME":
- boot_time_timestamp = psutil.boot_time()
- bt = datetime.fromtimestamp(boot_time_timestamp) #round(, 1)
- data = f"\nBoot Time: {bt.year}/{bt.month}/{bt.day} {bt.hour}:{bt.minute}:{bt.second}\nUptime in seconds, minutes, hours: {round(uptime.uptime(), 1)}, {round(uptime.uptime()/60, 1)}, {round(uptime.uptime()/60/60, 1)}"
- dataSend(data)
- elif data == "LOAD":
- cpufreq = psutil.cpu_freq()
- data = f"\nTotal CPU Usage: {psutil.cpu_percent()}%\nCurrent Frequency: {cpufreq.current:.2f}Mhz"
- dataSend(data)
- elif data == "BATTERY":
- data = f"{str(percent)}%, {pluggedIn}"
- dataSend(data)
- elif data == "SHUTDOWN":
- shutdownState = 1
- data = "Please type: SHUTDOWNCONFIRM to shutdown this server."
- print(str(shutdownState))
- dataSend(data)
- elif data == "SHUTDOWNCONFIRM":
- print(shutdownState)
- if shutdownState == 1:
- data = "Shutting down the server. The client will be terminated."
- dataSend(data)
- time.sleep(3)
- os.system("shutdown /s /t 1")
- else:
- data = "Please type SHUTDOWN before this command."
- dataSend(data)
- elif data == "RESTARTMACHINE":
- data = "Restarting server machine, please wait up to 5 minutes."
- dataSend(data)
- os.system("shutdown /r /t 1");
- elif data == "RESTARTSERVER":
- data = "Restarting the server process, please wait 10 seconds."
- dataSend(data)
- os.system('restartserver.py')
- elif data == "TESTCOMMAND1":
- dataSend("Test Command Received.")
- elif data == "TIME":
- dataSend(currentTime)
- elif data == "MULTIDATASEND()":
- dataSend(data)
- dataSend("Msg2")
- dataSend("Msg3")
- else:
- dataSend(data)
- c.close()
- #if __name__=='__main__':
- # Main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement