[linux] Hey you script, be quiet when all is well!
Remko Bolt
remko op cluebox.org
Ma Jan 29 23:33:14 CET 2007
Speciaal voor de script kiddies... Uh, ik bedoel Bash experts:
Het onderstaande script geeft me wat problemen. Het werkt verder goed
(constructieve kritiek/tips altijd welkom) alleen ik krijg het niet voor
elkaar om het `stil' te laten zijn:
getsomething: line 62: 8309 Done { echo -e
$line1$line2$line3$line4$line5$line6"\n\n"; }
8310 Hangup | openssl s_client -quiet -bugs -connect
$host:443 >>result-$tag
Nu ben ik wat aan het uitproberen geslagen en heb gemerkt dat je of een
Hangup of een Done krijgt. Hoe kom ik daar vanaf?
sheba:~$ sleep 60 &
[3] 22463
sheba:~$ kill -HUP 22463
sheba:~$
[3]+ Hangup sleep 60
sheba:~$ sleep 1 &
[3] 22464
sheba:~$
[3]+ Done sleep 1
----------------------
#!/bin/bash
# getsomething: (description here :-)
TMP_DIR=/home/remko/tmp
cd $TMP_DIR
host="www.somewhere.org"
tag=$RANDOM
persno=${1%%:*}
credentials=`echo -n $1 | uuencode -m - | sed -n '2 p' -`
line1="POST /members/assignments/bin/roster.cmd HTTP/1.1\n"
line2="Host: $host\n"
line3="Authorization: Basic "$credentials"\n"
line4="Content-Type: application/x-www-form-urlencoded\n"
line6="persno="$persno"&version=current"
line5="Content-Length: "${#line6}"\n"
echo -e "\r" >result-$tag
{
echo -e $line1$line2$line3$line4$line5$line6"\n\n"
} | openssl s_client -quiet -bugs -connect $host:443 \
>>result-$tag
PROC=$!
sleep 2
kill -HUP $PROC
# This could be a bit more sofisticated. Maybe check the
# last line of result-$tag and match it or time out.
if [ `cat result-$tag | wc -c` == "2" ]; then
echo "`basename $0`: connection failed." > /dev/stderr
exit_status=64
else
if grep "Indeling van:" result-$tag &>/dev/null; then
# This is an ugly hack to remove garbage in between
# windows line-endings. Where does it come from?
sed -e :l -e '/\r$/N; s/\r\n/\r/; tl' result-$tag \
| sed -e '/\r.*\r/d' - | sed -e '/^\r/d'
exit_status=0
else
echo "`basename $0`: no roster received." > /dev/stderr
exit_status=65
fi
fi
rm result-$tag
exit $exit_status
More information about the Linux
mailing list