Hi Alex :-),
Nu , nu.... problema nu este la ordinea executarii, ci in scriptul in
sine. Am facut un mic test:
1. am lasat in crontab numai o linie de forma:
*/1 * * * * root /root/bin/rescanscsi -r &> /root/xxx.log
Apoi ma uit in /var/spool/mail/root si in /root/xxx.log. Iata
rezultatele:
[root@server bin]# cat /root/xxx.log
/bin/sh: root: command not found
[root@server bin]#
[root@server bin]# cat /var/spool/mail/root
-----------------------------------
From root Wed Sep 25 10:30:01 2002
Return-Path: <[EMAIL PROTECTED]>
Received: (from root@localhost)
by localhost.localdomain (8.11.6/8.11.6) id g8P7U0001357
for root; Wed, 25 Sep 2002 10:30:00 +0300
Date: Wed, 25 Sep 2002 10:30:00 +0300
Message-Id: <[EMAIL PROTECTED]>
From: [EMAIL PROTECTED] (Cron Daemon)
To: [EMAIL PROTECTED]
Subject: Cron <root@server> root /bin/echo "am scanat"
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
/bin/sh: root: command not found
^^^^^^^^^^^^
Deci e limpede ca la executatea scriptului, probabil ca nu initializeaza
o variabila si de eroarea in cauza!
Si inca ceva: scriptul ruleaza corect in consola daca sunt logat ca
root.
Oricum, daca are cineva un hit, este binevenit.
Atasez in continuare si scriptul rescanscsi,pentru cazul in care se
prinde cineva mai rpd decit mine de unde apare aceasta eroare:
#!/bin/bash
# Skript to rescan SCSI bus, using the
# scsi add-single-device mechanism
# (w) 98/03/19 Kurt Garloff <[EMAIL PROTECTED]> (c) GNU GPL
# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
findhosts ()
{
hosts=
for name in /proc/scsi/*/?; do
name=${name#/proc/scsi/}
if test ! $name = scsi
then hosts="$hosts ${name#*/}"
echo "Host adapter ${name#*/} (${name%/*}) found."
fi
done
}
# Test if SCSI device $host $channen $id $lun exists
# Outputs description from /proc/scsi/scsi, returns new
testexist ()
{
grepstr="scsi$host Channel: 0$channel Id: 0*$id Lun: 0$lun"
new=`cat /proc/scsi/scsi|grep -e"$grepstr"`
if test ! -z "$new"
then cat /proc/scsi/scsi|grep -e"$grepstr"
cat /proc/scsi/scsi|grep -A2 -e"$grepstr"|tail -2|pr -o4 -l1
fi
}
# Perform search (scan $host)
dosearch ()
{
for channel in $channelsearch; do
for id in $idsearch; do
for lun in $lunsearch; do
new=
devnr="$host $channel $id $lun"
echo "Scanning for device $devnr ..."
printf "OLD: "
testexist
if test ! -z "$remove" -a ! -z "$new"
then echo "scsi remove-single-device $devnr" >/proc/scsi/scsi
echo "scsi add-single-device $devnr" >/proc/scsi/scsi
printf "\r\x1b[A\x1b[A\x1b[AOLD: "
testexist
if test -z "$new"; then printf "\rDEL: \r\n\n\n\n"; let rmvd+=1; fi
fi
if test -z "$new"
then printf "\rNEW: "
echo "scsi add-single-device $devnr" >/proc/scsi/scsi
testexist
if test -z "$new"; then printf "\r\x1b[A"; else let found+=1; fi
fi
done
done
done
}
# main
if test @$1 = @--help -o @$1 = @-h
then
echo "Usage: rescan-scsi-bus.sh [-l] [-w] [-c] [host [host ...]]"
echo " -l activates scanning for LUNs 0 .. 7 [default: 0]"
echo " -w enables scanning for device IDs 0 .. 15 [def.: 0 .. 7]"
echo " -r enables removing of devices [default: disabled]"
echo " -c enables scanning of channels 0 1 [default: 0]"
echo " If hosts are given, only these are scanned [default: all]"
exit 0
fi
# defaults
lunsearch="0"
idsearch="0 1 2 3 4 5 6 7"
channelsearch="0"
remove=""
# Scan options
opt="$1"
while test ! -z "$opt" -a -z "${opt##-*}"; do
opt=${opt#-}
case "$opt" in
l) lunsearch="0 1 2 3 4 5 6 7" ;;
w) idsearch="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ;;
c) channelsearch="0 1" ;;
r) remove=1 ;;
*) echo "Unknown option -$opt !" ;;
esac
shift
opt="$1"
done
# Hosts given ?
if test @$1 = @; then findhosts; else hosts=$*; fi
declare -i found=0
declare -i rmvd=0
for host in $hosts; do dosearch; done
echo "$found new device(s) found. "
echo "$rmvd device(s) removed. "
Regards,
Alex
---
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/