다음과 같이 작동하는 스크립트가 필요합니다.
이 특정 마운트 지점이 현재 서버에 마운트되어 있는지 확인하는 스크립트입니다. 마운트 지점 이름을 검색한 다음 출력 /etc/fstab
에서 df -h
확인 하거나 /proc/mounts
서버에 마운트되었는지 확인합니다(검증할 수 있는 더 좋은 방법이 있는 경우에도 괜찮습니다).
다시 시작한 후 설치되지 않은 경우 이메일이 트리거됩니다.
하나의 서버이면 괜찮지만 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가 설정되어 있고 모든 서버에 루트로 연결할 수 있다고 가정) 다음 작은 스크립트를 실행합니다(복사하여 명령줄에 붙여넣기).
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
관심 있는 마운트 지점으로 교체했는지 확인하세요 .실제와 똑같이 나타나야 합니다/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.
이 경우 거짓양성을 반환하지 않습니다.