Сценарий оболочки для проверки состояния точки монтирования на сервере linux

Мне нужен сценарий, который должен работать, как показано ниже.

Сценарий, в котором он будет проверять, установлена ​​ли эта конкретная точка монтирования на сервере. Он будет искать имя точки монтирования в /etc/fstab а затем проверять либо из вывода df -h либо /proc/mounts чтобы проверить, смонтирован ли он на сервере (если у вас есть лучший способ проверить, что это тоже хорошо).

После перезагрузки, в случае, если он не будет установлен, он вызовет электронное письмо.

Для одного сервера это нормально, но это будет использоваться для проверки более 1000 серверов, чтобы сценарий был лучшим решением.

Таким образом, сценарий будет выполняться на одном сервере, и он будет проверять статус mountpoint на другом 1000 сервере.

Точка монтирования на сервере находится в имени /mount1 , /mount2 , /mount3 и т. Д. Нам нужно только проверить это конкретное имя точки монтирования, мы можем игнорировать другие связанные с ОС FS.

Что я до сих пор:

 #!/bin/bash # Grep for word mountpoint name ie "mount" awk '{print $2}' /etc/fstab | grep -i "mount" > mntpoint.txt exec 3< mntpoint.txt while read mount <&3 do # Search for present mountpoint in file /prod/mounts. # I'm using /proc/mounts here to validate grep -iw $mount /proc/mounts > /dev/null if [ $? -eq 0 ] then echo $mount "is mounted" else echo $mount "is not mounted needs manual intervention" fi done 

4 Solutions collect form web for “Сценарий оболочки для проверки состояния точки монтирования на сервере linux”

Я бы порекомендовал попробовать это в python. Встроенный модуль os.path имеет очень простую функцию ismount.

 $ cat ismount.py import os mp = '/mount1' if os.path.ismount(mp): print('{0} is mounted'.format(mp)) else: print('{0} is NOT mounted'.format(mp)) $ python ismount.py /mount1 is NOT mounted 

Попробуйте что-то вроде этого. Сначала создайте список IP-адресов сервера (это предполагает, что вы настроили пароль без ssh и можете подключаться как root для всех severs), тогда запустите этот маленький скрипт (скопируйте в командной строке):

 while read ip; do echo "connecting to $ip"; ssh root@$ip "until mount | grep -w \"$MOUNT\" >/dev/null; do echo mounting \"$MOUNT\"; mount \"$MOUNT\"; sleep 1; done && echo Mounted on $ip" done < ips.txt 

Это ожидает файл с именем ips.txt с одним IP на строку. Это будет ssh в IP, и пока mount $MOUNT не будет установлен, он попытается это сделать. Обязательно замените $MOUNT точкой монтирования, которую вы заинтересовали, она должна выглядеть точно так же, как в /etc/fstab . Например:

 while read ip; do echo "connecting to $ip"; ssh root@$ip "until mount | grep -w \"/mnt/data\" >/dev/null; do echo mounting \"/mnt/data\"; mount \"/mnt/data\"; sleep 1; done && echo Mounted on $ip" done < ips.txt 
 #!/bin/bash A=``awk '{print $2}' /etc/fstab | grep -i "^/" | egrep -v '/etc/fstab|proc|sys|shm|pts`'` `for i in $A; do grep $i /proc/mounts > /dev/null` `if [ $? -eq 0 ]; then echo $i "is mounted" else echo $i "is not mounted needs manual intervention" fi done` 

Сценарий, предоставляемый LG, отлично работает, когда вы меняете grep в for-loop на:

 grep "$i " /proc/mounts. 

В этом случае он не вернет ложные срабатывания.

  • Чтобы передать параметр с помощью sed
  • FOR цикл не циклический
  • Solaris / bin / sh поиск файла ведет себя иначе, чем выполнение файла. Зачем?
  • Обнаруживать при запуске в виртуальном терминале?
  • Проверка скрипта выполняется
  • Имена файлов сценария сценария
  • Безопасно ли удалить файл сценария из этого скрипта?
  • bash + с помощью printf для печати в специальном формате
  • Как запустить скрипт оболочки (bash) на хромонике?
  • распаковать вложенные .zip-файлы по сценарию оболочки
  • Вычтите 7 дней с сегодняшнего дня
  • Добавить дату для имени папки, созданной с помощью mkdir
  • Linux и Unix - лучшая ОС в мире.