次のように動作するスクリプトが必要です。
この特定のマウントポイントが現在サーバーにマウントされていることを確認するスクリプト。マウントポイント名を検索し、出力/etc/fstab
でdf -h
確認するか、/proc/mounts
サーバーにマウントされていることを確認します(検証するためのより良い方法がある場合でも問題ありません)。
再起動後にインストールされていない場合は、電子メールがトリガーされます。
1つのサーバーであれば問題ありませんが、1000を超えるサーバーを認証するために使用されるため、スクリプトはより良いソリューションになります。
したがって、スクリプトはあるサーバーで実行され、別の1000サーバーでマウントポイントの状態を確認します。
サーバーのマウントポイント名は等です/mount1
。特定のマウントポイント名と他のOS関連FSを無視できることを確認してください。/mount2
/mount3
私が今まで持っているもの:
#!/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
答え1
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
答え2
これを試してみてください。まず、サーバーIPリストを作成し(パスワードなしのSSHが設定されており、すべてのサーバーにrootとして接続できるとします)、次の小さなスクリプトを実行します(コピーしてコマンドラインに貼り付けます)。
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
これには、1行に1つのIP呼び出しを含むファイルが必要です。ssh
IPに移動してマウントがマウントされていない場合は、マウント$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
答え3
#!/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`
答え4
forループのgrepを次のように変更すると:
grep "$i " /proc/mounts.
この場合、偽陽性は返されません。