MYCSS

Показ дописів із міткою bash. Показати всі дописи
Показ дописів із міткою bash. Показати всі дописи

2023-02-12

Скрипт для Proxmox - Періодичний знімок віртуальної машини

Буває що віртуальна машина використовує якийсь довготривалий розрахунок. А якщо що ?

То всі результати розрахунку пропали ?

Тому ось простий скрипт що періодично створює знімок віртуальної машини (snapshot) зі станом пам'яті. Також змінює назву збільшуючи її на одиницю.

#!/usr/bin/env bash

PATH=$PATH:/usr/sbin

VM=309

prevsn=$(qm listsnapshot ${VM} | head -n 1 | awk '{print $2}')

if [ "$prevsn" == "current"  ];then
 snname="a1"
else
 snname="a$(( ${prevsn:1} + 1 ))"
fi
echo prev:$prevsn new:${snname}
qm snapshot $VM ${snname}  --vmstate true
if [ $? -eq 0 ] && [ "$prevsn" != "current" ];then
 echo "all ok with new snapshot: ${snname}, remove prev: $prevsn"
 qm delsnapshot $VM  $prevsn
fi

Результат:

bash result

2023-01-04

Скрипт автоматизації перейменування віртуальних машин у Proxomos VE для приєднання до кластеру


При переносі віртуальних машин з ноду в кластер необхідно мати пустий нод, і номера віртуальних машин що не конфліктують з іншими. 

Для вирішення цієї задачі простіше і надійніше використати метод створення резервної копії і потім її відновлення в кластері. 

Але я створив малий скрип що допомагає обійтися без цього методу.

Тому цей простий скрип перейменовує гуртом віртуальні машини з номерами 1ХХ на 6ХХ і де дані зберігаються на ZFS диску з назвою 'mdata'.

2021-01-31

Нотатки : Простий скрипт для wifi device tracker в OpenWRT : відсилання повідомлень до MQTT

Скрипт для ash сценарію в OpenWRT.
Пошук активних WiFi пристроїв за їх MAC адресою, і якщо такий є то надсилання повідомлення до MQTT брокера зі станом пристрою при зміні стану. А інший скрипт надсилає стан вже до Телеграм каналу..


#!/bin/sh

uUser1='00:13:33:44:11:77'
uUser2='00:3D:33:5D:11:39'
users="User1 User2"

next=

function publish()
{
 mosquitto_pub -t "$1" -m "$2" -r
}

#MAIN
sleep 120

for m in $users; do
  eval p${m}=0
done

while true; do
 for m in $users; do
  um=$(eval "echo \${u${m}}")
  us=$(iwinfo wlan0 assoclist | grep -m 1 -c $um )
  ps=$(eval "echo \${p${m}}")
  if [ "$us" -ne $ps ];then
   eval p${m}=$us
   if [ -n "$next" ];then
     publish "tele/wifi_$m/LWT" "$us"
   fi
  fi
 done
 next=1
 sleep 90
done

Так як масивів в ash не має, то приходиться використовувати eval для  симуляції віртуального масиву.

Створив версію для LUA: Перший код в LUA. Скрипт для роутера з OpenWRT. MQTT та Telegram статус підключених WiFi clients.


2021-01-10

Нотатки : Простий скрипт для MQTT в OpenWRT : відсилання Telegram повідомлень з Emoji. Tasmota.

Маю роутер з #OpenWRT, і локально інстальованим брокером #MQTT  #mosquitto.

Роутер - OpenWRT, ext USB disk, RAM 64M

Сповіщення

Що б виконати простіші операції з сповіщення в телеграм каналі, написаний даний скрипт, що надсилає до телеграм каналу повідомлення при певних умовах.
Такі умови можуть бути від різних сенсорів розумного будинку, наприклад: 

  • стан вхідних дверей : зачинені / відчинені
  • стан замку в дверях : закрито / відкрито
  • стан охорони :  поставлено на охорону / знято з охорони
  • стан пристрою - датчику руху : працює / не працює
  • стан пристрою - лампи освітлення : працює / не працює

Emoji

Завдання це стан цих сенсорів показати відповідними зрозумілими зображеннями використовуючи Emoji:

Приклад використання зображень - емодзі

Список доступних зображень "Full Emoji List, v13.1"

2020-05-02

Нотатка. Shell, PHP script. GeoIP detect TimeZone.

Скрипт за IP адресою, визначає часовий пояс.
ip-timezone-info.sh
!/bin/bash

IP=$1

if [ -z "${IP}" ];then
 echo "-- Missed paramter of IP"
 exit
fi


function install()
{
howinstalled=$(apt list --installed 2>/dev/null  | grep  "^$1" | wc -l)
if [ "${howinstalled}" -lt 1 ] ;then
 echo !!!!!!!!! MISSED FILE "$1", please install it : sudo apt install $1
 sudo apt-get install $1
 #exit
fi
}

install mmdb-bin

TZCity=$(mmdblookup --file GeoLite2-City.mmdb --ip ${IP} location time_zone |\
 awk 'match( $0, /"([a-z|A-Z|/]*)"/ ,arr ) { print  arr[1] }' )
TZone=$(TZ=${TZCity} date +%z)
echo "${TZCity} GMT${TZone%??}"

2020-04-17

Керування плеєром MPV за допомогою API JSON

Є багатоплатформовий відео плеєр з відкрити кодом - MPV.
Все що він може і як цим керувати описано в офіційній документації.
Є задача - керувати цим плеєром коли він запушений на віддаленому екрані.
Один з варіантів керування це використати JSON-based IPC протокол.
У документації є приклади, тому на їх основі запускаю плеєр в ОС Ubuntu.

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready