Автор Тема: [Решено] Скрипт для монтирования сетевого ресурса  (Прочитано 6541 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Роман846

Привет всем! Написал не большой скриптик, который монтирует сетевой ресурс, но при запуске он пишет что уже смонтировано, хотя это не так. Условие вроде правильное. В чем проблема?
#!/bin/bash

echo -e "\e[33m  Проверяю доступность сервера...\e[0m"
ping -c 3 fs2-n >/dev/null 2>&1

if [ $? -eq 0 ]; then
  echo -e "\e[32m  Сервер доступен! =) \e[0m"
else
  sleep 1
  echo -e "\e[31m Сервер не доступен! =( \e[0m"
  exit
fi
sleep 1
if [ -e /mnt/fs2-n ]; then
  echo -e "\e[32m Точка монтирования обнаружена! \e[0m"
else
  echo -e "\e[31m Точка монтирования не обнаружена! Создаю... \e[0m"
  mkdir /mnt/fs2-n
fi

 cd /mnt/fs2-n/1c > /dev/null 2>&1
echo $?
sleep 1
if [ $? -eq 0 ]; then
 echo -e "\e[31m Смонтировано! \e[0m"
  exit
else
   echo -e "\e[33m  Монтирую в /mnt/fs2-n \e[0m"
   mount -t cifs -o username=user,password=password,iocharset=utf8,file_mode=0777,dir_mode=0777 //fs2-n/"Отдел информационных технологий" /mnt/fs2-n
   sleep 1
   echo -e "\e[32m  Готово! \e[0m"
 exit 0
fi
[code]
Спасибо!
« Последнее редактирование: 13 Августа 2014, 12:52:08 от qupl »
Acer Aspire 5750G Debian 10(buster) XFCE4
 

yura_n

  • Гость
Re: Скрипт для монтирования сетевого ресурса
« Ответ #1 : 06 Августа 2014, 16:28:29 »
Вероятно вот в этом условии:
if [ $? -eq 0 ]; then
Если предыдущая команда выполнена корректно, то в любом случае вернется 0.
 

Оффлайн Роман846

Re: Скрипт для монтирования сетевого ресурса
« Ответ #2 : 06 Августа 2014, 16:35:07 »
Вероятно вот в этом условии:
if [ $? -eq 0 ]; then
Если предыдущая команда выполнена корректно, то в любом случае вернется 0.
Но при выполнении команды cd /mnt/fs2-n/1c возвращается 1. Значит он должен монтировать.
« Последнее редактирование: 06 Августа 2014, 16:37:39 от Роман846 »
Acer Aspire 5750G Debian 10(buster) XFCE4
 

yura_n

  • Гость
Re: Скрипт для монтирования сетевого ресурса
« Ответ #3 : 06 Августа 2014, 16:38:53 »
Но при выполнении команды cd /mnt/fs2-n/1c возвращается 1. Значит он должен монтировать.
Вы получаете код завершения последней команды, а у вас команда sleep перед условием.
 

Оффлайн Роман846

Re: Скрипт для монтирования сетевого ресурса
« Ответ #4 : 06 Августа 2014, 16:57:48 »
Но при выполнении команды cd /mnt/fs2-n/1c возвращается 1. Значит он должен монтировать.
Вы получаете код завершения последней команды, а у вас команда sleep перед условием.
Ничего подобного. Без Sleep тоже самое.
Acer Aspire 5750G Debian 10(buster) XFCE4
 

yura_n

  • Гость
Re: Скрипт для монтирования сетевого ресурса
« Ответ #5 : 06 Августа 2014, 17:23:23 »
В переменную значение сохраните:
TEMPVAR=$?
И попробуйте сравнить с переменной:
if [ $TEMPVAR -eq 0 ]; then
 

Yrii

  • Гость
Re: Скрипт для монтирования сетевого ресурса
« Ответ #6 : 07 Августа 2014, 11:37:29 »
Роман846, У тебя скрипт, в условииях, проверяет наличия файла, а не каталога if [ -e Надо e заменить на d
 

Оффлайн Роман846

Re: Скрипт для монтирования сетевого ресурса
« Ответ #7 : 11 Августа 2014, 08:06:47 »
Все поправил как говорили, но все осталось прежним.
Вывод:
sudo bin/mosa
  Проверяю доступность сервера...
  Сервер доступен! =)
 Точка монтирования обнаружена!
0
 Смонтировано!
Хотя ничего не смонтировано!
Acer Aspire 5750G Debian 10(buster) XFCE4
 

Оффлайн endru

Re: Скрипт для монтирования сетевого ресурса
« Ответ #8 : 11 Августа 2014, 10:29:26 »
Все поправил как говорили, но все осталось прежним.
показывайте как выглядит код сейчас!

Оффлайн Роман846

Re: Скрипт для монтирования сетевого ресурса
« Ответ #9 : 11 Августа 2014, 12:45:55 »
Все поправил как говорили, но все осталось прежним.
показывайте как выглядит код сейчас!
#!/bin/bash
TEMPVAR=$?

echo -e "\e[33m  Проверяю доступность сервера...\e[0m"
ping -c 3 fs2-n >/dev/null 2>&1

if [ $TEMPVAR -eq 0 ]; then
  echo -e "\e[32m  Сервер доступен! =) \e[0m"
else
  sleep 1
  echo -e "\e[31m Сервер не доступен! =( \e[0m"
  exit
fi
sleep 1
if [ -d /mnt/fs2-n ]; then
  echo -e "\e[32m Точка монтирования обнаружена! \e[0m"
else
  echo -e "\e[31m Точка монтирования не обнаружена! Создаю... \e[0m"
  mkdir /mnt/fs2-n
fi

  cd /mnt/fs2-n/1c > /dev/null 2>&1
  echo $TEMPVAR
if [ $TEMPVAR -eq 0 ]; then
  echo -e "\e[31m Смонтировано! \e[0m"
  exit
else
  echo -e "\e[33m  Монтирую в /mnt/fs2-n \e[0m"
  mount -t cifs -o username=ovt111,password=789123,iocharset=utf8,file_mode=0777,dir_mode=0777 //fs2-n/"Отдел информационных технологий" /mnt/fs2-n
  sleep 1
  echo -e "\e[32m  Готово! \e[0m"
  exit 0
fi
Acer Aspire 5750G Debian 10(buster) XFCE4
 

Оффлайн endru

Re: Скрипт для монтирования сетевого ресурса
« Ответ #10 : 11 Августа 2014, 13:27:58 »
полная каша в вашем скрипте!
TEMPVAR всегда будет равен нулю!  :D
лучше запихивайте проверку в само условие, на подобии:
if [[ "$(ping -c 3 fs2-n)" ]]
then
  echo -e "\e[32m  Сервер доступен! =) \e[0m"
else
  sleep 1
  echo -e "\e[31m Сервер не доступен! =( \e[0m"
  exit 1
fi
« Последнее редактирование: 11 Августа 2014, 13:33:08 от endru »
 

Yrii

  • Гость
Re: Скрипт для монтирования сетевого ресурса
« Ответ #11 : 11 Августа 2014, 13:59:17 »
сэмулировал пару директорий... вроде отработало всё как надо...
#!/bin/bash

echo -e "\e[33m  Проверяю доступность сервера...\e[0m"
ping -c 1 192.168.1.1 > /dev/null 2>&1
x="$?"
echo $x
if [ $x -eq 0 ]; then
  echo -e "\e[32m  Сервер доступен! =) \e[0m"
else
  echo -e "\e[31m Сервер не доступен! =( \e[0m"
fi

sleep 1

if [ -d /mnt/test1 ]; then
  echo -e "\e[32m Точка монтирования обнаружена! \e[0m"
else
  echo -e "\e[31m Точка монтирования не обнаружена! Создаю... \e[0m"
  mkdir /mnt/test1
fi

cd /mnt/test1/1c > /dev/null 2>&1
y="$?"
echo $y

if [ $y -eq 0 ]; then
  echo -e "\e[31m Смонтировано! \e[0m"
else
  echo -e "\e[33m  Тут команда монтирования.... \e[0m"
  notify-send -i -t 10000 "Тут команда монтирования"
  sleep 1
  echo -e "\e[32m  Смонтированно! Конец \e[0m"
fi
 

Оффлайн Роман846

Re: Скрипт для монтирования сетевого ресурса
« Ответ #12 : 11 Августа 2014, 14:00:37 »
Спасибо! Если писать сразу в условии, то норм! Вот только как можно сделать так чтобы вывод cd /mnt/fs2-n/1c не выводился на экран, а то как то не красиво).
Проверяю доступность сервера...
  Сервер доступен! =)
 Точка монтирования обнаружена!
bin/mosa: line 22: cd: /mnt/fs2-n/1c: Нет такого файла или каталога
  Монтирую в /mnt/fs2-n
  Готово!
#!/bin/bash
echo -e "\e[33m  Проверяю доступность сервера...\e[0m"

if [[ "$(ping -c 3 fs2-n)" ]]; then
  echo -e "\e[32m  Сервер доступен! =) \e[0m"
else
  sleep 1
  echo -e "\e[31m Сервер не доступен! =( \e[0m"
  exit 1
fi
sleep 1
if [ -d /mnt/fs2-n ]; then
  echo -e "\e[32m Точка монтирования обнаружена! \e[0m"
else
  echo -e "\e[31m Точка монтирования не обнаружена! Создаю... \e[0m"
  mkdir /mnt/fs2-n
fi

if [[ "$(cd /mnt/fs2-n/1c)" ]]; then
  echo -e "\e[31m Смонтировано! \e[0m"
  exit 1
else
  echo -e "\e[33m  Монтирую в /mnt/fs2-n \e[0m"
  mount -t cifs -o username=ovt111,password=789123,iocharset=utf8,file_mode=0777,dir_mode=0777 //fs2-n/"Отдел информационных технологий" /mnt/fs2-n
  sleep 1
  echo -e "\e[32m  Готово! \e[0m"
  exit 0
fi
« Последнее редактирование: 11 Августа 2014, 14:02:10 от Роман846 »
Acer Aspire 5750G Debian 10(buster) XFCE4
 

Оффлайн endru

Re: Скрипт для монтирования сетевого ресурса
« Ответ #13 : 11 Августа 2014, 14:05:51 »
Вот только как можно сделать так чтобы вывод cd /mnt/fs2-n/1c не выводился на экран, а то как то не красиво).
что мешает проверять условием:
if [ -d /mnt/fs2-n/1c ]

Оффлайн Роман846

Re: Скрипт для монтирования сетевого ресурса
« Ответ #14 : 11 Августа 2014, 14:37:59 »
#!/bin/bash

echo -e "\e[33m  Проверяю доступность сервера...\e[0m"

if [[ "$(ping -c 3 fs2-n)" ]]; then
  echo -e "\e[32m  Сервер доступен! =) \e[0m"
else
  sleep 1
  echo -e "\e[31m Сервер не доступен! =( \e[0m"
  exit 1
fi
sleep 1
if [ -d /mnt/fs2-n ]; then
  echo -e "\e[32m Точка монтирования обнаружена! \e[0m"
else
  echo -e "\e[31m Точка монтирования не обнаружена! Создаю... \e[0m"
  mkdir /mnt/fs2-n
fi

  #cd /mnt/fs2-n/1c > /dev/null 2>&1

if [ -d /mnt/fs2-n/1c ]; then
  echo -e "\e[31m Смонтировано! \e[0m"
  exit 0
else
  echo -e "\e[33m  Монтирую в /mnt/fs2-n \e[0m"
  mount -t cifs -o username=ovt111,password=789123,iocharset=utf8,file_mode=0777,dir_mode=0777 //fs2-n/"Отдел информационных технологий" /mnt/fs2-n
  sleep 1
  echo -e "\e[32m  Готово! \e[0m"
  exit 0
fi
Если уже смонтировано, то он снова монтирует (
sudo bin/mosa
  Проверяю доступность сервера...
  Сервер доступен! =)
 Точка монтирования обнаружена!
  Монтирую в /mnt/fs2-n
mount error(16): Device or resource busy
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
  Готово!
Он же должен сказать, что уже смонтировано!
Acer Aspire 5750G Debian 10(buster) XFCE4
 

Теги:
     

    [Решено] Почему Grub2 выдает ошибку загрузки?

    Автор morozovnsk

    Ответов: 11
    Просмотров: 2442
    Последний ответ 27 Декабря 2013, 10:16:12
    от Malaheenee
    [РЕШЕНО] Установка Pepper Flash

    Автор alsoijw

    Ответов: 4
    Просмотров: 4309
    Последний ответ 04 Мая 2015, 21:00:46
    от alsoijw
    [РЕШЕНО]Ошибка при обновлении

    Автор Ferox

    Ответов: 5
    Просмотров: 5668
    Последний ответ 03 Сентября 2018, 17:42:30
    от ogost
    [Решено] Установка teamviewer

    Автор unum

    Ответов: 5
    Просмотров: 2401
    Последний ответ 25 Сентября 2016, 16:34:04
    от alsoijw
    [РЕШЕНО] Проблема с обновлением дистра

    Автор APL

    Ответов: 10
    Просмотров: 2629
    Последний ответ 16 Ноября 2011, 01:58:27
    от Valeron