[MEGOLDVA] Samba mount bash script problema

Egy samba megosztasra szeretnek backupot kesziteni.
A bash scriptnek be kell csatlakoztatnia egy samba megosztast, majd arra elvegezni a mentest, majd umount.
Ha a script nem tudja valami miatt csatlakoztatni a megosztast irjon mailt.

A gondom csak az, hogy ha a samba csatlakozas nem sikerul, a script nem fut tovabb...

igy probal mountolni:
mount -t cifs "//$IP/$SMBNAME" $BDIR -o username=$SMBUSER,password=$SMBPASS

tehat ha sikeres a mount akkor minden oke, elkeszul a mentes, de ha nem sikeres, akkor a script futasa itt (a mount paracs utan) megall.
ez vajon miert van?

koszi elore is a szakertelmet:)

pero

Hozzászólások

Próbáld meg a kimenetet átirányítani, a /dev/nullba, akkor az hibakimenet nem kever be...bár ez csak egy ötlet!

el kell folytani a mount stderr kimenetét és utána levizsgálni a $? változó tartalmát.
ha 0 akkor minden ok, ha !=0 akkor bukta, mehet az email
--
\\-- blog --//

mount ... && \
rsync -avu ... && \
umount

vagy hasonló

ellenorzest azert szeretnem, mert ha a mount valami miatt nem sikeres, pl a tavoli NAS ki van kapcsolva akkor a mentes igaz lefut, de nem a tavoli gepre kerul, hanem csak belerakja a konyvtarba ugyanazon a gepen.

A ping nem eleg, mert attol, hogy ping meg nem bizos a sikeres mount

de ugyebar sikertelen mount eseten kilep a script, nincs lehetosegem igy ellenorizni es emailt kuldeni a hibarol.

Ha a script 'megall', azaz nem lep ki, akkor latnod kell a processzek kozott a futo scriptet...

Kellene az egesz script.

nekem véletlenül van egy ilyen szkriptem, és ugyanúgy backup-ot csinál :)
valami dereng, hogy szívtam én is a szkriptből mountolással valamiért, ha jól emlékszem, még egyszer olyat is kiköpött, hogy ilyen sorrendben voltak a paraméterek, mint nálad, azaz a '-o' a végén... meg a username/password-del is ha jól rémlik voltak gondok, úgyhogy inkább credentials fájlt választottam.
valamint a szkript mountolás előtt mindenféle ellenőrzéseket csinál, pl. smbclient-tel megnézi, hogy elérhető-e a gép, megvan-e rajta a megosztás, ilyesmi.

Szia, en is csinaltam egy ilyen scriptet. Az enyem egy debian szerveren fut es egy routerre masolja a backupot (amiben van egy merevlemez).

Nekem ez igy mukodik:

### MOUNT
# mount external drive if not already mounted
EXTERNAL_FOLDER='//192.168.0.1/projects'
MOUNT_POINT='/mnt/external'
SUCCESS=1;
TRY=0;

while [ $SUCCESS -ne 0 ] && [ $TRY -lt 3 ]; do
let TRY=TRY+1
# check if the drive is mounted
mount | $GREP $MOUNT_POINT > /dev/null
if [ $? -ne 0 ]; then
# try to mount
mount.cifs $EXTERNAL_FOLDER $MOUNT_POINT -o username=$USER,password=$PASS
SUCCESS=$?
else
SUCCESS=0
fi
done
if [ $SUCCESS -ne 0 ]; then
log_error "Couldn't mount external drive $EXTERNAL_FOLDER to mount point $MOUNT_POINT";
# send mail if error
send_mail
exit
fi
### END MOUNT

Par tipp:

- Script belso valtozokra kisbetus irasmod ajanlott
- Mivel ahogy nezem, linuxon /etc/mtab-bol mukodik a mount, ezert a 'grep $mount_point' /etc/mtab' is eleg
- grep -q -val nem kell elnyelned a kimenetet, return value-nak 0-t ad vissza, ha van talalat, 1-et, ha nincs
- "mount_point" csak akkor jo, ha mas mountolt konyvtar neve nem tartalmazza a keresett nevet substringkent... (pl ha /usr es /usr/local kulon filesystem) - ilyennel egyszer az eletben nagyon nagyot lehet szopni!

Szerintem ez egy egesz jo megoldas a fentiekre:


grep -q " $mount_point " /etc/mtab && echo "$mount_point is currently mounted according to /etc/mtab"

szerk.: NEM jo, meg javitani fogom ;-)
szerk2. javitva! ;-))

Mint lathatod, itt a mount point elott-utan levo szokozoket is grepelem, ezzel kivedheto a fenti problema.

Hasonlokeppen felesleges SUCCESS-re tesztelni, eleg ennyi:


mount.cifs $EXTERNAL_FOLDER $MOUNT_POINT -o username=$USER,password=$PASS || \
  log_error "Couldn't mount external drive $EXTERNAL_FOLDER to mount point $MOUNT_POINT";

Ez nem jo?

if mount -t cifs "//$IP/$SMBNAME" $BDIR -o username=$SMBUSER,password=$SMBPASS
then echo oke, mount jo
else echo nemjo
fi

Aztan persze a then/else helyere azt irsz, amit szeretnel.

--
http://www.micros~1

Mi lenne, ha elfelejtenéd a mount, másol, ellenőriz, umount mókát, és kb. két sorban megoldanád rsync használatával az egész másik_gépre_másolás mizériát?