J'écris un script pour corriger une lettre "F" manquante dans un fichier journal de courrier. Le fichier journal de messagerie est mis à jour en permanence. Je reçois un nom de fichier, après cela, je fais 'sudo su' pour obtenir un accès superutilisateur. Dans sudo, je répare un 'F' manquant. Cependant, je ne peux pas utiliser ce nom de fichier dans le bloc sudo. S'il vous plaît, est-ce que quelqu'un peut m'aider à exporter ces variables shell à l'intérieur de sudo? J'ai essayé d'utiliser export mais cela ne fonctionne pas. Le bloc de code que j'ai créé est le suivant-
#Script to solve F issue
#----------------------------------------
#By Kapil Shirsath
#----------------------------------------
cd /var/spool/mail #mail files reside in mail folder
echo "Entered in mail folder"
filename=`ls -lrt 99999*| sort -k 5 -rn | head -1 | tr -s " " "," | cut -d "," -f "8"` # this will list the file with maximum size`
echo "File with maximum size is $filename"
echo "----------------------------------------------------"
echo "Is it the file expected?(y/n)"
read choice
if test $choice == "n"
then
echo "Exiting...."
exit;
fi;
c=1
while [ $c -le 5 ]
do
ls -lrt $filename
echo $filename
sleep 3
c=`expr $c + 1`
done
echo "---------------------------------------------------"
sudo su<<'HERE' #this will give you super user permissions
echo "Got root access"
echo "First line of the file is as below :"
head -1 $filename
echo "---------------------------------------"
firstline=`head -1 $filename`
echo "Repeat : $firstline"
echo $firstline | grep ^"rom" >/dev/null
if test $? -eq 0
then
ex -s $filename <<'EOF'
1s/^/F/
:wq
EOF
echo "F issue fixed!"
HERE
c=1
while [ $c -le 5 ]
do
ls -lrt $filename
sleep 3
c=`expr $c + 1`
done
echo "---------------------------------------------------"
else
echo "Not finding the missing 'F' ! !! Kindly check with your system "
exit;
fi;
HERE
. Utilisez-le comme:sudo su<<HERE
head -1 $filename
?