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