LOGFILE="/var/log/addprinter2.log"
RETAIN_NUM_LINES=10
function logsetup {
TMP=$(/usr/bin/tail -n $RETAIN_NUM_LINES $LOGFILE 2>/dev/null) && /bin/echo "${TMP}" > $LOGFILE
exec > >(/usr/bin/tee -a $LOGFILE)
exec 2>&1
}
function log {
LOGTIME=`/bin/date "+%Y-%m-%d %H:%M:%S"`
/bin/echo -e "[$LOGTIME]: $*"
}
logsetup
log starting script
log `env`
# get pi info:
piserial=$(/bin/cat /proc/cpuinfo | /bin/grep Serial | /usr/bin/cut -d ' ' -f 2)
log $piserial
host=$(/bin/cat /etc/default/autossh | /bin/grep :22 | /bin/grep ^tunnel | /usr/bin/cut -d '@' -f 2)
log $host
ipaddress=$(/sbin/ip route get 10.8.0.1 | /usr/bin/awk 'NR==1 {print $NF}')
log $ipaddress
function remove_all_printers {
log removing all printers
log `/usr/bin/lpstat -p | /usr/bin/cut -d" " -f2 | /usr/bin/xargs -I{} /usr/sbin/lpadmin -x {} 2>&1`
}
uris=( $(/usr/sbin/lpinfo -v | /bin/grep -Po '(?<=direct )usb:.+'| /usr/bin/sort) )
declare -a uris=('usb://ZebraOne')
log retriving uris...
for (( i = 0; i < ${#uris[@]}; i++ )); do
log "${uris[$i]}"
done
# pass zebra's number
function set_up_printer {
log `/bin/systemctl stop cups 2>&1`
log `/usr/sbin/lpadmin -p Zebra"$1" -E -v "$2" 2>&1`
log `/bin/echo -e "$1;\c" >> "/etc/cups/znumbers" 2>&1`
log `/bin/echo "$uri" | /bin/grep -Po '(?<=serial\=).+' >> "/etc/cups/znumbers" 2>&1`
log `/bin/systemctl restart cups 2>&1`
}
function get_unique_from_jazva {
unique=$(/usr/bin/curl -s --data "piserial=$piserial&host=$host&ipaddress=$ipaddress&port=$1" http://www.jazva.com/jz/data/api/printer/provision)
log unique number for $1 is $unique
}
remove_all_printers
# TODO: check if all printers removed
for (( i = 0; i < ${#uris[@]}; i++ )); do
unique=""
log setting up printer ${uris[$i]}
set_up_printer $((i+1)) "${uris[$i]}"
if [[ $((i+1)) = 1 ]]; then
get_unique_from_jazva 9100
if [ $unique =~ ^[A-Z0-9_]{4,50}$ ]; then
/bin/echo "$unique" | /usr/bin/lp -d Zebra1
# TODO: check lp result here
else
log wrong unique number for ${uris[$i]}
fi
fi
if [[ $((i+1)) = 2 ]]; then
get_unique_from_jazva 9101
/bin/echo "$unique" | /usr/bin/lp -d Zebra2
fi
if [[ $((i+1)) = 3 ]]; then
get_unique_from_jazva 9102
/bin/echo "$unique" | /usr/bin/lp -d Zebra3
fi
if [[ $((i+1)) = 4 ]]; then
get_unique_from_jazva 9103
/bin/echo "$unique" | /usr/bin/lp -d Zebra4
fi
done