MYCSS

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

2023-06-17

Нотатка для себе. Використання TCP IP round robin для ffmpeg за допомогою SQUID Proxy

Умови

  • Задача балансувати зовнішнє підключення програми ffmpeg за допомогою пулу різних IP адрес.
  • Firewall server з встановленим Squid. У мене це сервер "pfSense+". 
  • Мережа реальних IP адрес  /24.

 

pfSense+ Virtual IP

Налаштовую на інтерфейсі додаткові зовнішні адреси як Аліаси або Virtual IPs у pfSense. Це десять  реальних  IP.

Virtual IPs у pfSense

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

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-17

Використання Google Cloud IoT MQTT з консольного BASH сценарію та Mosquitto

Google Cloud Platform надає можливість використати IoT Core для підключення IoT пристроїв за протоколом MQTT та HTTP.
Приклади налаштування, і основи роботи є на багатьох ресурсах і у відео:

Моя задача створити безпечне підключення до Google IoT Core з консолі свого пристрою і використати мінімум програм:

Зв'язок mqtt topic (ts2) з google topic event (b01)

Публікація до google topic event (b01) з mosquitto_pub

Перегляд отриманих повідомлень в google sub підписки на mqtt topic (ts2)
 
Підписка до topic - error

Скрипти для автоматизації підключення.

Головна особливість для зв'язку з Google Cloud Platform, те що потрібно автентифікувати пристрій котрий надсилає #MQTT повідомлення за допомогою JWT.
Автентифікація пристрою за JWT
 

2021-01-10

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

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

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

Сповіщення

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

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

Emoji

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

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

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

2019-03-15

Script for detect changing UID of SAMBA user

FreeNAS 11.2, SAMBA with AD

Sript detect wrong user with sid begin with 900

wbinfo -i EDOMAIN\\user1
EDOMAIN\user1:*:90000012:90000015:test user:/home/EDOMAIN/user1:/bin/sh


#!/bin/sh
wbinfoexe=/usr/local/bin/wbinfo
for user in $(${wbinfoexe} -u)
do
 uid=$(${wbinfoexe} -i "$user" | /usr/bin/awk -F: '{print $3}' | /usr/bin/egrep "^900")
 if [ ! -z "${uid}" ];then
  echo "Abnormal user is $user $uid"
  ${wbinfoexe} --logoff-user="${user}"
  net cache flush
  /etc/ix.rc.d/ix-activedirectory restart
  break
 fi
done

2016-07-14

Blocking ip by list of numbered dns names

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

#!/bin/sh

echo "START"
for i in $(jot - 1 99); do
 hip="m$i.esputnik.com";
 ip=$(host -t a $hip | awk '{print $4}');
 for addr in $ip
  do
  echo "$addr" >> block_ip_loop.txt
 done
done

for addr in $(sort -u  block_ip_loop.txt).
do
 echo "blocking $addr"
 ./ipfw-blockip-by-hand.sh 9999999 $addr
done
rm  block_ip_loop.txt
echo "END" 

2015-01-27

Періодична резервна копія з використанням архіватора 7-zip

Для резервного копіювання баз 1С 7.7 для Windows.
backup_db.cmd:
@echo off

set zip="С:\Program Files\7-Zip\7z.exe"
set dbpath="F:\DataBases" 
set b_path=R:\backup\db
set b_file=db_backup_

rem delete old 7z archives, for 10 days
forfiles -p "%b_path%" -s -m *.7z /D -10 /C "cmd /c del @path" 

rem try use 7zip
%zip% a -t7z  -ssw -mx3 -bd -xr@arhive.list  "%b_path%\%b_file%-%date%.7z" %dbpath% 

В тій самій теці що і срипт - розміщується файл виключень arhive.list:
*.7z
*.rar
*.zip
*.arj
*.msi

Скрипт шукає попередньо створені архіви за 10 діб і видаляє старіші.
Далі архівує визначену теку з базами до архіву з поточною датою в визначеним префіксом з опцією архівувати відкриті файли.

2014-12-16

Windows batch Shadow Copy Volume, create and delete.

За допомогою цього скрипту є можливість створити тіньову копію для диску, зробити резервне копіювання даних, і видалити тіньову копію по закінченню копіювання.

@echo off
rem --- http://lexxai.pp.ua --- 
set tmpfile=tmp.shadow
set disk=e:
vssadmin create shadow /for=%disk% > %tmpfile%

FOR /F "tokens=1,2 delims=:" %%i in ('find "Shadow Copy" %tmpfile%') do (
 if "%%i" == "    Shadow Copy ID" SET SHID=%%j
 if "%%i" == "    Shadow Copy Volume Name" SET SHNA=%%j
)

call :Strip %SHID%
set SHID=%a%
call :Strip %SHNA%
set SHNA=%a%

echo ---------- START BACKUP inside SHADOW COPY --------
echo PATH is %SHNA%
echo ---------- STOP  BACKUP inside SHADOW COPY --------

IF NOT "%SHID%"=="" vssadmin delete shadows /Shadow=%SHID% /Quiet >NUL
del %tmpfile%

goto :EOF

:Strip
set a=%1

:EOF 

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

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

ipv6 ready