How do you check if ph0 is set to DATA?
Charles A. Sefranek
cals at cals01.NEWPORT.RI.US
Sat Sep 23 12:22:49 AEST 1989
In article <985 at utoday.UUCP> comeau at .UUCP (Greg Comeau) writes:
>In article <512 at cals01.NEWPORT.RI.US> cals at cals01.Newport.RI.US (Charles A. Sefranek) writes:
>>In article <4185 at ditka.UUCP> kls at ditka.UUCP (Karl Swartz) writes:
>>>...
>>>I was under the (possibly misguided) impression that due to
>>>software bugs ph0 didn't work very well as a data line.
>>
>>Yup, you're misguided. I *only* use ph0, mostly as a DATA line.
>
>Care to elaborate on that? I was tol many years ago by several AT&T
>people (I know that may not mean anything) that the ph0 harware was
>a bit freaky and that I should always use ph1. ...
Well, I put my machine on line Oct 1987 and have been using only ph0
since then. I have had problems, but the fix disk solved the un-
explained machine lock-ups. The inode bug has bit me several times,
too, but hopefully the *next* fixdisk will solve that. I have had NO
problems traceable to pho hardware.
Many people have asked for phstat, my shell script that I use to control
uucico transfers, and any other info I can give them. Here it is ...
-----------cut here------------cut here----------cut here------------
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: README phstat.c uusites.poll
# Wrapped by cals at cals01 on Fri Sep 22 22:02:56 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(5451 characters\)
sed "s/^X//" >README <<'END_OF_README'
X===================================
X phstat.c
X===================================
X
X PHSTAT is called with the device descriptor of the phone
Xdevice whose status is desired, ie:
X
Xphstat /ph0
X
Xwill return the status of phone line 0. The status is returned on
Xstandard output as a text string indicating the state as follows:
X
X VOICE-IDLE indicates line is idle in voice mode
X
X VOICE-ACTIVE indicates line is in voice mode with a
X conversation in progress.
X
X DATA indicates line is data mode.
X
XCurrently phstat will not detect the RINGING condition as such. I think
Xthis is returned as status VOICE-ACTIVE, but I'm not sure.
X
X PHSTAT will return via an exit(1) if it is called improperly,
Xand with an exit(0) otherwise.
X
X To compile phstat with shared libraries:
X
Xcc -c -ophstat phstat.c
Xld -o phstat phstat.o /lib/crt0s.o /lib/shlib.ifile
X
X I installed phstat in /usr/local/bin/phstat with user bin,
Xgroup bin and permissions 755.
X
X===================================
X uusites.poll
X===================================
X
X This file is the shell script I use to initiate the uucp
Xconnection to my feed site. There are two things you *HAVE* to
Xchange if you want to use this for yourself:
X
X Change variable SITE to be the name of the site you are calling.
X Change variable SITE1 to be the first 6 characters of SITE.
X
XI put this shell script in /usr/lib/uucp/uusites.poll with user uucp,
Xgroup mail, and permissions 755. I modified my crontab file to run this in
Xplace of the uudemon.hr script. It is set up so I can also run it as
Xan ordinary user for special occasions.
X
XMy system uses the standard ATT uucp (not HoneyDanBer), and I call my feed
Xsite to establish the connection. I also contact only one site. If you
Xwant to contact more than one site you will have to modify the script to
Xsuit your needs.
X
X Several important things I have learned in setting this up:
X
X1) All uucp activity is logged on a file /usr/spool/uucp/LOGFILE.
X The standard system setup manages this log file weekly so it
X doesn't overflow your disk. Keep an eye on this file regularly
X to see what's going on with your uucp connection. Many problems
X will first show up here.
X
X2) If a uucico fails for any reason, it leaves a status file (named
X STST<something> laying around in the /usr/spool/uucp directory.
X The presence of this file will prevent uucico from attempting a
X retry before some default time (usually 1 hour). The script
X removes all STST* files from the spool directory to allow a
X shorter retry period.
X
X3) Before you change the state of the phone line, you *must* save
X its current status. This is required to decide what to do after
X the uucico is completed. Remember that a successful uucp
X connection can run for hours! Cron (or you) may invoke this
X shell script *several times* during this time period. You
X don't want one of these redundant invocations to screw up
X a perfectly good phone connection. Uucico will properly
X handle multiple invocations of itself, but it doesn't know or
X care anything about the phone device. YOU must handle that!
X
X4) The trap statement is in there to prevent normal things (like
X logging out) from messing up a successful connection. It
X probably isn't needed if you only run the script from cron,
X but I like to be able to run it manually for debugging and
X other special occasions (like a power failure right before
X cron would normally run it!). The trap protects me from
X myself.
X
X5) The phtoggle program will properly check for all error
X conditions regarding the phone line. It won't try to control
X it if it is being used by someone else, and it takes care of
X all the lock files. Unfortunately, if it does fail for an error
X condition it doesn't seem to tell you in a way that can be
X detected in the shell script. It just leaves an error window
X laying around on the console. That's how I found out what
X situations my shell script wasn't handling properly.
X
X6) I now use a dummy poll file to detect whether or not the uucico
X transfer was successful. This is an empty file named so uucico
X thinks it is a queued up job waiting to be acted on. When it
X discovers the file is empty, it just skips it. This isn't done,
X however, until a complete connection has been successfully
X established. So, if you had a good connect, the poll file will
X disappear. If the connection failed (initially) the poll file
X will still be around. If the connection fails after it had
X been successfully established, the poll file will also disappear
X and the shell script will not retry. This was done at the request
X of my feed site, so they can effectively ignore me (by allowing
X my login, turning the line around, then killing the connection)
X if they have higher priority things to do and don't want my
X machine repeatedly beating the door down trying to get in.
X This shell script can be painfully persistent in trying to
X establish a good connection otherwise!
X
XGood luck with this. Please let me know if you find any flaws in
Xthe above or come across any other problems I haven't seen yet;
Xother than that, I make no guarantee or warranty whatsoever for this
Xsoftware. Use at your own risk and let the user beware!
X
X--
X Charlie Sefranek cals at cals01.NEWPORT.RI.US
XUUCP: {rayssd,xanth,lazlo,mirror}!galaxia!cals01!cals
XAlt.: c4s at rayssdb.ray.com {sun,decuac,gatech,necntc,ukma}!rayssd!rayssdb!c4s
END_OF_README
if test 5451 -ne `wc -c <README`; then
echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f phstat.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"phstat.c\"
else
echo shar: Extracting \"phstat.c\" \(936 characters\)
sed "s/^X//" >phstat.c <<'END_OF_phstat.c'
X/*
X *
X * phstat.c A quick hack to get the status of the phone line so
X * we can decide whether or not to toggle it.
X *
X * At home, I have only one line, so when I leave for work
X * I want my phone line set to DATA. I run a shell script
X * from cron at 7:00 AM, that goes something like this:
X *
X *
X * Status=`/usr/lbin/phstat /dev/ph0`
X *
X * if [ "$Status" = "VOICE" ] ; then
X * /usr/bin/phtoggle
X * fi
X *
X *
X * Robert Rodriguez {inhp4|ptsfa}!pttesac!robert
X */
X
X#include <sys/phone.h>
X#include <fcntl.h>
X
Xmain( argc, argv )
X
Xint argc;
Xchar **argv;
X
X{
X int fd;
X struct updata phdata;
X
X if ( argc != 2 )
X {
X printf( "Usage: phstat <device>\n" );
X exit(1);
X }
X if ( (fd = open( argv[1], O_RDWR | O_NDELAY )) == -1 )
X exit(1);
X if ( (ioctl( fd, PIOCGETP, &phdata )) != 0 )
X exit(1);
X if ( phdata.c_lineparam & VOICE )
X printf( "VOICE\n" );
X else
X printf( "DATA\n" );
X close(fd);
X exit(0);
X}
END_OF_phstat.c
if test 936 -ne `wc -c <phstat.c`; then
echo shar: \"phstat.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f uusites.poll -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"uusites.poll\"
else
echo shar: Extracting \"uusites.poll\" \(3157 characters\)
sed "s/^X//" >uusites.poll <<'END_OF_uusites.poll'
X#--------------------------------------------------------------------------
X#
X# Poll known sites for traffic
X#
X#--------------------------------------------------------------------------
X#
X# 27-Jun-88 Modified to only phtoggle if necessary.
X# 17-Aug-88 Modified to trap termination to insure DATA line goes back to
X# VOICE after manual invocation and logout.
X# 20-Aug-88 Modified to use phstat to determine ACTIVE/IDLE status on
X# VOICE line.
X# 08-Jan-89 Modified to repetitively retry uucico call if previous connection
X# failed. Known problems with this implementation:
X# After a LOST LINE condition, uustat returns status of the PREVIOUS con-
X# versation.
X# A successful connection that results in say a half hour conversation
X# and then terminates abnormally will retry - it would be better to let
X# it go until the next call instead of overrunning the time slot.
X# 28-Feb-89 Modified to use a null poll file instead of uustat call to
X# determine status of conversation after uucico call.
X# 27-Mar-89 Modified to check number of inodes and blocks before doing
X# the uucico. Aborts and sends warning message to console and unix.log
X# if either is too low.
X# 27-Apr-89 Removed debugging stuff used to test null poll file operation.
X# Changed retry limit.
X#
X# Charles A. Sefranek
X# cals at cals01.NEWPORT.RI.US
X#--------------------------------------------------------------------------
XSITE=smwhere # Change this to the site name you contact
XSITE1=smwher # This is SITE truncated to 6 characters
XPATH=:/usr/lib/uucp:/bin:/usr/bin
XLOGFILE=/usr/spool/uucp/LOGFILE
XPOLLFILE=/usr/spool/uucp/C.${SITE1}AD0000
Xcd /usr/lib/uucp
Xlimit=12 # Max number of retries
Xretry=0
Xwtime=300 # Seconds to wait between retries
Xminblks=4000 # Min acceptable number of disk blocks
Xmininodes=400 # Min acceptable number of inodes
X#
X# Find number of blocks and inodes for hard disk
X#
Xset `df | grep "\/dev\/fp002"`
X#
X# Send warning to console and unix.log if inodes too low
X#
Xif [ $5 -lt $mininodes ]
Xthen
X echo "uusites.poll: Abort - too few inodes \c" >/dev/error
X echo "#uusites.poll: Abort - too few inodes \c" >/dev/error
X exit 1
Xfi
X#
X# Send warning to console and unix.log if disk blocks too low
X#
Xif [ $3 -lt $minblks ]
Xthen
X echo "uusites.poll: Abort - too few disk blocks \c" >/dev/error
X echo "#uusites.poll: Abort - too few disk blocks \c" >/dev/error
X exit 2
Xfi
Xwhile [ $retry -lt $limit ]
Xdo
X rm -f /usr/spool/uucp/STST*
X status=`/usr/local/bin/phstat /dev/ph0`
X trap '' 1 2 3 9 15
X #
X # Only toggle if it is voice and it is idle
X # VOICE-ACTIVE will be handled by uucico
X #
X if [ $status = 'VOICE-IDLE' ]
X then phtoggle
X fi
X #
X # Create dummy poll file here
X #
X cp /dev/null $POLLFILE
X #
X # Initiate the conversation
X #
X uucico -r1 -s${SITE}
X #
X # Don't change it if it wasn't toggled before !
X #
X if [ $status = 'VOICE-IDLE' ]
X then phtoggle
X fi
X trap 1 2 3 9 15
X #
X # Check if a retry is needed
X #
X if test -f $POLLFILE
X then
X # Conversation failed - retry
X retry=`expr $retry + 1`
X sleep $wtime
X else
X # Conversation succeeded - force exit
X retry=`expr $limit + 1`
X fi
Xdone
Xuulog
END_OF_uusites.poll
if test 3157 -ne `wc -c <uusites.poll`; then
echo shar: \"uusites.poll\" unpacked with wrong size!
fi
chmod +x uusites.poll
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
--
--
Charlie Sefranek cals at cals01.NEWPORT.RI.US
UUCP: {rayssd,xanth,lazlo,mirror}!galaxia!cals01!cals
Alt.: c4s at rayssdb.ray.com {sun,decuac,gatech,necntc,ukma}!rayssd!rayssdb!c4s
More information about the Unix-pc.general
mailing list