aboutsummaryrefslogtreecommitdiff
path: root/commands.py
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2019-09-28 19:30:41 +0200
committerneodarz <neodarz@neodarz.net>2019-09-28 19:30:41 +0200
commitd70390197ee3e06ee1fecbc14d1ed48ba4040c94 (patch)
tree325267c8d64ed2d7282d1d3166b0a651b9594ddc /commands.py
downloadpykeepalive-master.tar.xz
pykeepalive-master.zip
Initial commitHEADmaster
Diffstat (limited to 'commands.py')
-rw-r--r--commands.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/commands.py b/commands.py
new file mode 100644
index 0000000..6ddb940
--- /dev/null
+++ b/commands.py
@@ -0,0 +1,91 @@
+#/bin/python3
+
+import sys
+
+import tailhead
+
+import platform
+import subprocess
+
+import datetime, time
+
+import json
+
+def _make_gen(reader):
+ b = reader(1024 * 1024)
+ while b:
+ yield b
+ b = reader(1024*1024)
+
+def file_len(filename):
+ """ More opti than wc on turis """
+ f = open(filename, 'rb')
+ f_gen = _make_gen(f.raw.read)
+ return sum( buf.count(b'\n') for buf in f_gen )
+
+def multi_ping(hosts, interface):
+ """
+ Returns True if host (list of str) responds to a ping request.
+ Remember that a host may not respond to a ping (ICMP) request even if the host name is valid.
+ """
+
+ # Option for the number of packets as a function of
+ count = '-n' if platform.system().lower()=='windows' else '-c'
+ source = '-S' if platform.system().lower()=='windows' else '-I'
+
+ if type(hosts) is list:
+ procs = []
+ for host in hosts:
+ command = ['ping', count, '1', source, interface, host]
+ proc = subprocess.Popen(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+ procs.append(proc)
+
+ procs_done = []
+ while True:
+ for proc in procs:
+ if proc.poll() is not None:
+ procs_done.append(proc.poll())
+ procs.pop(procs.index(proc))
+ if len(procs) == 0:
+ #print("o")
+ break
+ time.sleep(1)
+
+ if 0 in procs_done:
+ return 0
+ else:
+ return 1
+
+ else:
+ print("fuck you host must be a list")
+ sys.exit()
+
+
+def log_write(status):
+ with open(LOG_PATH_FILE, 'a') as f:
+ f.write("{} {}\n".format(tools.date(), status))
+
+def uqmi_current_settings():
+ command = ['uqmi', '-d', '/dev/cdc-wdm0', '--get-current-settings']
+ proc = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ datas = json.loads(proc.stdout)
+ return datas["ipv4"]["ip"], datas["ipv4"]["gateway"], datas["ipv4"]["subnet"]
+
+def ifconfig_update(interface, ip, subnet):
+ command = ['ifconfig', interface, ip, 'netmask', subnet, 'up']
+ proc = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+
+def route_update(gateway):
+ command = ['route', 'add', 'default', 'gw', gateway]
+ proc = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+
+def tail(file, lines):
+ return tailhead.tail(open(file, 'rb'), lines)
+
+
+def date():
+ # Calculate the offset taking into account daylight saving time
+ utc_offset_sec = time.altzone if time.localtime().tm_isdst else time.timezone
+ utc_offset = datetime.timedelta(seconds=-utc_offset_sec)
+ return datetime.datetime.now().replace(tzinfo=datetime.timezone(offset=utc_offset)).isoformat()
+