|
Hello folks-
Thanks for all of the help and advice for the autostarting script for
lp5250d. It is now complete and running and I thought to send you all a
copy just in case anybody would need it too.
The basic idea is that it refers to a new file /etc/tn5250lp for a list of
printers to start. These printers must be properly defined in
/etc/tn5250rc. It might be possible to put lp5250d options in this file,
but I have not tested this.
I had to sleep the script 5 seconds for the restart case, so that our very
remote and somewhat loaded as/400 would have time to find that the writer
is no longer active and to shut it down before the new connection starts.
Without this sleep period, 50% of restarts would fail. If this still proves
to be a problem, I will consider modifying the script to check that the
daemon has actually started.
Thanks
Elmars
#!/bin/bash
#
# v.0.6 of a script to start, stop and restart preconfigured as/400
printers.
# this script to parses the start, stop and restart
# options from the command line and based on this input acts on the
printers
# listed in /etc/tn5250lp. The printers in this list must be defined in
# /etc/tn5250rc. It should be possible to run this script either as an init
# script or from the commandline by any user.
#
# Usage:start: This will start any printers not already started. It will
test
# for each printer's presence and if not found will start it.
# stop: This will stop all started printers
# restart:This will stop all started printers and then will
# start all listed printers.
#
# Initial code for single printer management provided by James Rich
# Adapted and modified for larger scale use by Elmars Ositis
# This script is free to use and modify without restriction.
case "$1" in
start)
exec 6<&0
exec < /etc/tn5250lp
while read printer
do
PID=`ps ax|grep "lp5250d $printer"|egrep -v
grep|awk '{print $1}'`
if [ "$PID" ]; then
echo "lp5250d $printer is running with PID
${PID}"
else
echo "starting lp5250d $printer..."
lp5250d $printer
fi
done
exec 0<&6 6>&-
;;
stop)
exec 6<&0
exec < /etc/tn5250lp
while read printer
do
PID=`ps ax|grep "lp5250d $printer"|egrep -v
grep|awk '{print $1}'`
if [ "$PID" ]; then
echo "stopping lp52250d $printer with PID
${PID}"
kill -9 $PID
else
echo "nothing to stop"
fi
done
exec 0<&6 6>&-
;;
restart)
exec 6<&0
exec < /etc/tn5250lp
while read printer
do
PID=`ps ax|grep "lp5250d $printer"|egrep -v
grep|awk '{print $1}'`
if [ "$PID" ]; then
echo "stopping lp52250d $printer with PID
${PID}"
kill -9 $PID
echo "starting lp5250d $printer..."
# the following delay is to allow a
remote as/400
# to recover before starting the
writer again.
# may need to increase delay for
loaded systems
sleep 5
lp5250d $printer
else
echo "starting lp5250d $printer..."
lp5250d $printer
fi
done
exec 0<&6 6>&-
;;
*)
echo "Usage: test {start|stop|restart}"
exit 1
;;
esac
exit 0
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.