wiki:code

ZFS snapshot/rollback script

В портах есть достаточно много готовых скриптов для создания снепшотов, например:

Port: zfstools
Path: /usr/ports/sysutils/zfstools
Info: OpenSolaris-compatible auto snapshotting for ZFS

Port: zfsnap
Path: /usr/ports/sysutils/zfsnap
Info: Simple sh script to make zfs rolling snaphosts with cron

Port: zfs-snapshot-mgmt
Path: /usr/ports/sysutils/zfs-snapshot-mgmt
Info: Automatic ZFS snapshot management tool''

но если хочется быстро и просто то :

snap.sh
#!/bin/sh
daten=`date +20%g-%m-%e` # дата формата ГГГГ-ММ-ДД
olddaten=`date -v-14d +20%g-%m-%e` # получаем дату -14 дней
bases='storage/samba/bases'
public='storage/samba/public'
users='storage/samba/users'
 
# а вот тут вся магия:
# - делаем новый снепшот с сегодняшней датой
# - и удаляем с датой-14 дней.
zfs snapshot $bases@$daten
zfs destroy $bases@$olddaten
zfs snapshot $public@$daten
zfs destroy $public@$olddaten
zfs snapshot $users@$daten
zfs destroy $users@$olddaten

Кидаем симлинк в /etc/periodic/daily и забываем об еще одной головной боли.

Чтобы откатиться к какому-то снепшоту, можно сделать:

zfs rollback _название_снепшота

Чтобы примониторать снепшот в папку и вытащить нужное файло, делаем так:

zfs clone -o mountpoint=/путь-к-папке-монтирования название-снепшота место-хранения-в-сторажде

Отправка СМС Addpac

sms.sh
#!/usr/bin/expect -f
 
log_user 1 
set address [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set gsm1 [lindex $argv 3]
set gsm2 [lindex $argv 4]
set num [lindex $argv 5]
set text [lindex $argv 6]
 
spawn telnet ${address}
expect "login:" 
send -- "${username}\r" 
expect "Password:" 
send -- "${password}\r" 
expect "> " 
send -- "en\r" 
expect "# " 
send -- "gsm ${gsm1} ${gsm2} sms message send ${num} ${text}\r" 
expect "# " 
send -- "exit\r" 
expect "> "    
send -- "exit\r"

использовать так:

./addpac-sms.sh 192.168.1.250 root router 0 1 89167199999 “Привет я СМС бот, Астериск это будущее телефонии”

Script laptop battery

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

Нам понадобится audio/mpg123 и звуковой файл который будет проигрываться при достижении минимального порога заряда батареи.

Для начала проверим :

sysctl -a | grep battery.life
hw.acpi.battery.life: 85

Собственно сам скрипт:

batt.sh
awk=/usr/bin/awk
echo=/bin/echo
grep=/usr/bin/grep
sysctl=/sbin/sysctl
mpg123=/usr/local/bin/mpg123
batt_min=20
batt=`$sysctl -a | $grep battery.life | $awk '/life/ {print $2}'`
if [ "$batt" -lt "$batt_min" ]; 
then $mpg123 /root/sound/zhutkoe_zavyvanie.mp3 
fi

В кронтаб пишем примерно так:

*/5 * * * *     /usr/bin/lockf -s -t 0 /tmp/batt.lck /root/batt.sh

OpenBsd

apm | awk /remaining/' {print $6}'
  • wiki/code.txt
  • Последние изменения: 2019/11/06 20:03
  • admin