Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2011-04-14 20:50:36
навеяно этим -
http://sourceforge.net/mailarchive/mess ... d=27332885
писалось под свои девайсы. завтра ещё cciss допилю сюда.
Код: Выделить всё
#!/bin/sh
#="/dev/ad1 -a -m root -o on -S on -s (S/../.././22|L/../../6/23)"
tpl="-a -m root@`hostname` -o on -S on -s (S/../.././22|L/../../6/23)"
conf="/usr/local/etc/smartd.conf"
if test -f /usr/local/sbin/smartctl
then
# OK
else
echo "instal 'sysutils/smartmontools' before using"
exit 1
fi
# create smartd.conf
echo "# config auto created `date +%Y-%m-%d` in `date +%H:%M:%S`" > $conf
echo "" >> $conf
# check LSI controllers
if test -e /dev/mpt0
then
#echo "found device: /dev/mpt0"
# scan for pass devices
smartctl --scan-open | grep pass | awk '{print $1}' |
{
while read device
do
# check device
if smartctl -a $device -d scsi >/dev/null 2>&1
then
echo "# disk on LSI SCSI controller (/dev/mpt0)" >> $conf
echo "$device -d scsi $tpl" >> $conf
fi
done
}
fi
# check 3ware controllers
if test -f /usr/local/sbin/tw_cli
then
# check 3ware '9000/9500/9550/9650' series controller
if test -e /dev/twa0
then
# get all used port on controller
tw_cli /c0 show | grep ^p | grep -v NOT-PRESENT | awk '{print $1}' | tr -d "[:alpha:]" |
{
while read port
do
echo "# disk on 3ware SATA/SAS controller" >> $conf
echo "/dev/twa0 -d 3ware,$port $tpl" >> $conf
done
}
fi
# check 3ware '5000/6000/7000/8000' series controller
if test -e /dev/twe0
then
# get all used port on controller
tw_cli /c0 show | grep ^p | grep -v NOT-PRESENT | awk '{print $1}' | tr -d "[:alpha:]" |
{
while read port
do
echo "# disk on 3ware PATA/SATA controller" >> $conf
echo "/dev/twe0 -d 3ware,$port $tpl" >> $conf
done
}
fi
else
echo "3ware controllers skipped - required 'sysutils/tw_cli'"
fi
# foreach all disks in system
for disk in `sysctl -n kern.disks`
do
#echo $disk
type="`echo $disk | cut -c 1-2`"
if [ $type = "ad" ]
then
echo "# disk on standart SATA/PATA controller" >> $conf
echo "/dev/$disk $tpl" >> $conf
fi
done
echo "" >> $conf
echo "# EOF" >> $conf
# create log file
touch /var/log/smartd.log
Последний раз редактировалось
f_andrey 2011-04-14 22:40:23, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.
Убей их всех! Бог потом рассортирует...
Alex Keda
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2011-04-15 7:25:58
2 f_andrey
таки я подумав же выбрал...
скрипт ОС-специфичный...
Убей их всех! Бог потом рассортирует...
Alex Keda
-
f_andrey
- майор
- Сообщения: 2651
- Зарегистрирован: 2007-12-26 1:22:58
- Откуда: СПб
-
Контактная информация:
Непрочитанное сообщение
f_andrey » 2011-04-15 9:15:16
Ну и форум специфичный, а тут не скриптик, а целый скриптище, так что пусть народ в шеле практикуется
Хотя ту и под софт можно подвести, он же конкретной софтине почву готовит, в общем конечно сложно, напиши статью тогда будет однозначно
f_andrey
-
hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Непрочитанное сообщение
hizel » 2011-04-15 9:26:37
^_^ все правильно двинул
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
hizel
-
Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2011-04-15 18:53:02
недошли руки до ciss - оказывается опция скана в новом smartd появилась - на тех серверах весь софт надо вначале обновить
на неделе допилю
Убей их всех! Бог потом рассортирует...
Alex Keda
-
Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2011-04-18 13:27:01
добавил ciss
к сожалению, перебором, т.к. не знаю как получить списки дисков =((
Код: Выделить всё
srv0# cat /root/scripts/patches/restore/smartd.sh
#!/bin/sh
tpl="-a -m root@`hostname` -o on -S on -s (S/../.././22|L/../../6/23)"
conf="/usr/local/etc/smartd.conf"
if test -f /usr/local/sbin/smartctl
then
# OK
else
echo "instal 'sysutils/smartmontools' before using"
exit 1
fi
# create smartd.conf
echo "# config auto created `date +%Y-%m-%d` in `date +%H:%M:%S`" > $conf
echo "" >> $conf
# check HP SmartArray
ciss_list="`ls /dev | grep ciss`"
for adapter in $ciss_list
do
if test -e /dev/$adapter
then
for drive in `jot - 0 31`
do
# check device
if smartctl -a /dev/$adapter -d cciss,$drive >/dev/null 2>&1
then
echo "# $drive disk on /dev/$adapter (HP SmartArray)" >> $conf
echo "/dev/$adapter -d cciss,$drive $tpl" >> $conf
fi
done
fi
done
# check LSI controllers
if test -e /dev/mpt0
then
#echo "found device: /dev/mpt0"
# scan for pass devices
smartctl --scan-open | grep pass | awk '{print $1}' |
{
while read device
do
# check device
if smartctl -a $device -d scsi >/dev/null 2>&1
then
echo "# disk on LSI SCSI controller (/dev/mpt0)" >> $conf
echo "$device -d scsi $tpl" >> $conf
fi
done
}
fi
# check 3ware controllers
if test -f /usr/local/sbin/tw_cli
then
# check 3ware '9000/9500/9550/9650' series controller
if test -e /dev/twa0
then
# get all used port on controller
tw_cli /c0 show | grep ^p | grep -v NOT-PRESENT | awk '{print $1}' | tr -d "[:alpha:]" |
{
while read port
do
echo "# disk on 3ware SATA/SAS controller" >> $conf
echo "/dev/twa0 -d 3ware,$port $tpl" >> $conf
done
}
fi
# check 3ware '5000/6000/7000/8000' series controller
if test -e /dev/twe0
then
# get all used port on controller
tw_cli /c0 show | grep ^p | grep -v NOT-PRESENT | awk '{print $1}' | tr -d "[:alpha:]" |
{
while read port
do
echo "# disk on 3ware PATA/SATA controller" >> $conf
echo "/dev/twe0 -d 3ware,$port $tpl" >> $conf
done
}
fi
else
echo "3ware controllers skipped - required 'sysutils/tw_cli'"
fi
# foreach all disks in system
for disk in `sysctl -n kern.disks`
do
#echo $disk
type="`echo $disk | cut -c 1-2`"
if [ $type = "ad" ]
then
echo "# disk on standart SATA/PATA controller" >> $conf
echo "/dev/$disk $tpl" >> $conf
fi
done
echo "" >> $conf
echo "# EOF" >> $conf
# create log file
touch /var/log/smartd.log
Убей их всех! Бог потом рассортирует...
Alex Keda
-
manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
-
Контактная информация:
Непрочитанное сообщение
manefesto » 2011-04-20 13:49:07
sysctl dev.subdisk
я такой яростный шо аж пизде
Ц
manefesto
-
Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2011-04-20 20:01:32
Код: Выделить всё
radius0$ sysctl dev.subdisk
sysctl: unknown oid 'dev.subdisk'
radius0$ sysctl -a | grep dev.subdisk
radius0$ sysctl -a | grep disk
kern.disks: da0
vfs.nfs.diskless_rootpath:
vfs.nfs.diskless_valid: 0
radius0$
а там массив из двух дисков
Убей их всех! Бог потом рассортирует...
Alex Keda