Merge branch 'master' of https://git.mount-mockery.de/dirk/bin
This commit is contained in:
commit
84582af968
30
apt-extend-raspi
Executable file
30
apt-extend-raspi
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
|
||||
#
|
||||
# Additional Packages
|
||||
COMMON="
|
||||
zsh zsh-syntax-highlighting zsh-autosuggestions
|
||||
vim vim-python-jedi vim-autopep8 git tmux
|
||||
neofetch figlet powerline
|
||||
"
|
||||
|
||||
ALL=$COMMON
|
||||
|
||||
echo The followin packages and their required depending packages will be installed:
|
||||
echo ------------------------------------------------------------------------------
|
||||
echo $ALL
|
||||
echo ------------------------------------------------------------------------------
|
||||
read -r -p "Are you sure? [y/N] " response
|
||||
echo ------------------------------------------------------------------------------
|
||||
case "$response" in
|
||||
[yY][eE][sS]|[yY])
|
||||
sudo apt-get -y install $ALL
|
||||
#
|
||||
echo
|
||||
echo
|
||||
;;
|
||||
*)
|
||||
echo Installation aborted!
|
||||
;;
|
||||
esac
|
93
dnsleases
Executable file
93
dnsleases
Executable file
@ -0,0 +1,93 @@
|
||||
#!/bin/python3
|
||||
#
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
class host(object):
|
||||
def __init__(self):
|
||||
self.mac = ''
|
||||
self.ip = ''
|
||||
self.vlan = 0
|
||||
self.state = ''
|
||||
self.hostname = ''
|
||||
self.lease_tm = 0
|
||||
|
||||
def sortcriteria(h):
|
||||
rv = h.hostname if h.hostname != '*' else '~'
|
||||
rv += ".".join(["%03d" % int(v) for v in h.ip.split('.')])
|
||||
return rv.lower()
|
||||
|
||||
def __str__(self):
|
||||
return " * %-16s - %17s - %-10s - %15s - %s" % (self.ip, self.mac, self.state, time.asctime(time.localtime(self.lease_tm)), self.hostname)
|
||||
|
||||
|
||||
class hostlist(dict):
|
||||
def __init__(self):
|
||||
dict.__init__(self)
|
||||
|
||||
def append(self, host):
|
||||
if host.mac in self:
|
||||
if host.state < self[host.mac].state:
|
||||
self[host.mac] = host
|
||||
else:
|
||||
self[host.mac] = host
|
||||
|
||||
def vlan_list(self, vlan):
|
||||
rv = hostlist()
|
||||
for h in self.values():
|
||||
if h.vlan == vlan:
|
||||
rv.append(h)
|
||||
return rv
|
||||
|
||||
def __str__(self):
|
||||
entries = list(self.values())
|
||||
entries.sort(key=host.sortcriteria)
|
||||
rv = ""
|
||||
for h in entries:
|
||||
rv += str(h) + '\n'
|
||||
return rv
|
||||
|
||||
|
||||
hl = hostlist()
|
||||
|
||||
#
|
||||
# ip n
|
||||
#
|
||||
for line in subprocess.check_output(['ip', 'n']).decode('utf-8').split('\n'):
|
||||
data = line.split(" ")
|
||||
h = host()
|
||||
h.ip = data[0]
|
||||
try:
|
||||
h.vlan = int(h.ip.split('.')[2])
|
||||
except IndexError:
|
||||
pass
|
||||
if len(data) == 6:
|
||||
h. mac = data[4]
|
||||
h.state = data[5]
|
||||
else:
|
||||
continue
|
||||
hl.append(h)
|
||||
|
||||
#
|
||||
# leases
|
||||
#
|
||||
with open('/var/lib/misc/dnsmasq.leases', 'r') as fh:
|
||||
for line in fh.read().split('\n'):
|
||||
data = line.split(' ')
|
||||
if len(data) == 5:
|
||||
h = hl.get(data[1], host())
|
||||
h.lease_tm = int(data[0])
|
||||
h.mac = data[1]
|
||||
h.ip = data[2]
|
||||
try:
|
||||
h.vlan = int(h.ip.split('.')[2])
|
||||
except IndexError:
|
||||
pass
|
||||
h.hostname = data[3]
|
||||
if h.mac not in hl:
|
||||
hl.append(h)
|
||||
|
||||
for vlan in [20, 30, 40, 50, 60, 90]:
|
||||
print("Hosts in VLAN %d" % vlan)
|
||||
print(hl.vlan_list(vlan))
|
||||
print()
|
Loading…
x
Reference in New Issue
Block a user