1 |
#!/bin/bash |
#!/bin/bash |
2 |
|
|
|
SQL_USER=jomo |
|
|
SQL_PASS=j0m0 |
|
|
SQL_HOST=128.20.41.110 |
|
|
SQL_DB=jomo |
|
|
|
|
3 |
source /etc/conf.d/usbippolld |
source /etc/conf.d/usbippolld |
4 |
source /home/rogalla/cvsroot/alx-src/alxconfig-ng/functions/mysqlfunctions |
source /usr/lib/alxconfig-ng/functions/mysqlfunctions |
5 |
|
|
6 |
|
# reset connection status for all clients on daemon startup |
7 |
|
mysqldo "update clients set connected='0'" |
8 |
|
|
9 |
while true |
while true |
10 |
do |
do |
12 |
|
|
13 |
for client in ${ALLCLIENTS} |
for client in ${ALLCLIENTS} |
14 |
do |
do |
15 |
# BUSID=$(mysqldo "select busid from clients where ip='${client}'") |
# filter all not connected clients |
|
# |
|
|
# if fping -q ${FPING_OPTS} ${client} |
|
|
# then |
|
|
# echo "-- polling client ${client} on dev ${BUSID}" |
|
|
# usbip -a ${client} ${BUSID} |
|
|
# else |
|
|
# echo "-- client ${client} not found, removing from list" |
|
|
# |
|
|
# out=$(mktemp) |
|
|
# port=$(usbip -p &> ${out};grep -B3 -i "128.20.3.3" ${out} | grep Port | cut -d' ' -f2| sed "s|:||") |
|
|
# usbip -d ${port} |
|
|
# mysqldo "delete from clients where ip='${client}'" |
|
|
# fi |
|
|
|
|
|
|
|
16 |
if [[ $(mysqldo "select connected from clients where ip='${client}'") = 1 ]] |
if [[ $(mysqldo "select connected from clients where ip='${client}'") = 1 ]] |
17 |
then |
then |
18 |
BUSID=$(mysqldo "select busid from clients where ip='${client}'") |
BUSID=$(mysqldo "select busid from clients where ip='${client}'") |
19 |
|
|
20 |
echo "-- polling client ${client} on dev ${BUSID}" |
echo "-- polling client #${client} on dev ${BUSID}" |
21 |
usbip -a ${client} ${BUSID} |
usbip -a ${client} ${BUSID} |
22 |
|
|
23 |
|
# disconnect non reachable ports |
24 |
|
if [[ -n $(out=$(mktemp);usbip -a ${client} ${BUSID} &> ${out}; grep '\[Connection refused\]' ${out}) ]] || |
25 |
|
[[ -n $(out=$(mktemp);usbip -a ${client} ${BUSID} &> ${out}; grep '\[No route to host\]' ${out}) ]] |
26 |
|
then |
27 |
|
echo "-- client #${client} *non* reachable on dev ${BUSID}; reset connection state" |
28 |
|
mysqldo "update clients set connected='0', busid='' where ip='${client}'" |
29 |
|
fi |
30 |
else |
else |
31 |
echo "-- client ${client} not found, removing from list" |
echo "-- client #${client} not found, removing from list" |
32 |
|
|
33 |
out=$(mktemp) |
out=$(mktemp) |
34 |
port=$(usbip -p &> ${out};grep -B3 -i "${client}" ${out} | grep Port | cut -d' ' -f2| sed "s|:||") |
port=$(usbip -p &> ${out};grep -B3 -i "${client}" ${out} | grep Port | cut -d' ' -f2| sed "s|:||") |
35 |
[[ ! -z ${port} ]] && usbip -d ${port} |
[[ ! -z ${port} ]] && usbip -d ${port} |
36 |
|
|
37 |
|
mysqldo "update clients set connected='0', busid='' where ip='${client}'" |
38 |
fi |
fi |
39 |
|
# give the device the chance to (dis)connect |
40 |
|
sleep 3 |
41 |
|
done |
42 |
|
|
43 |
|
sleep ${USBIP_WAIT_TIMEOUT} |
44 |
|
|
45 |
|
## #TODO: fix driver b0rkage |
46 |
|
# mage-lager ~ # usbip -d 05 |
47 |
|
# 8 ports available |
48 |
|
# |
49 |
|
# port 5 detached |
50 |
|
# mage-lager ~ # usbip -p |
51 |
|
# 8 ports available |
52 |
|
# |
53 |
|
# usbip err: vhci_driver.c: 60 (imported_device_init) sysfs_open_device 007 [No such file or directory] |
54 |
|
# usbip err: vhci_driver.c: 140 (parse_status) init new device [No such file or directory] |
55 |
|
|
56 |
|
|
57 |
|
# disconnect all stale ports |
58 |
|
staleports=$(out=$(mktemp);usbip -p &> ${out};grep '\<Port Initializing\>' ${out} | grep Port | cut -d' ' -f2 | sed "s|:||") |
59 |
|
if [[ -n ${staleports} ]] |
60 |
|
then |
61 |
|
# wait some seconds, or driver may break !! |
62 |
sleep ${USBIP_WAIT_TIMEOUT} |
sleep ${USBIP_WAIT_TIMEOUT} |
63 |
done |
for port in ${staleports} |
64 |
|
do |
65 |
|
echo "-- disconnecting stale port #${port}" |
66 |
|
usbip -d ${port} |
67 |
|
# give the device the chance to disconnect |
68 |
|
sleep 3 |
69 |
|
done |
70 |
|
fi |
71 |
done |
done |