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

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
 

Теги:
     

    [Решено] Составной том

    Автор Андрей_1

    Ответов: 8
    Просмотров: 2030
    Последний ответ 12 Сентября 2013, 06:59:32
    от qupl
    [Решено] Сборка ядра для NAS'а (посоветуйте выбор ядра)

    Автор Nathan

    Ответов: 5
    Просмотров: 2588
    Последний ответ 23 Января 2014, 03:31:37
    от Nathan
    [Решено] Установка Debian 8.1 на Lenovo B590

    Автор sagekrite

    Ответов: 6
    Просмотров: 3915
    Последний ответ 10 Июля 2015, 10:03:57
    от sagekrite
    [РЕШЕНО] Установка debian-6.0.3-i386 desktop второй ОС и ёё настройка

    Автор Radik

    Ответов: 23
    Просмотров: 6318
    Последний ответ 19 Января 2012, 17:54:10
    от Radik
    [решено]stumpwm; переключение раскладки

    Автор Тхакур

    Ответов: 73
    Просмотров: 6559
    Последний ответ 27 Апреля 2019, 18:12:55
    от yoric