Author Archives: dominik

Handbrake – automatyczna kompresja plików video

Poniższy skrypt PowerShell umożliwia automatyczną kompresję materiałów video w folderze i podfolderach.

gci . *.mp4 -R | 
foreach-object {
 $saveBase = "v:\handbrake"
 $curDir = (Get-Item -Path ".\" -Verbose).FullName
 $inName = $_.BaseName + $_.Extension
 $inFile = $_.DirectoryName + "\" + $inName
 $outFile = $saveBase + $inFile.replace($curDir, "")
 $outDir = $outFile.replace($inName, "")
 New-Item -path "$outDir" -type directory -force
 echo "Working on $inFile"
 echo "Saving to $outFile"
 &"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "$inFile" -o "$outFile" --preset "Very Fast 1080p30"
}

Źródła i inne tematycznie związane artykuły:
http://www.codegist.net/search/handbrake%20recursive%20encode/1
https://dzone.com/articles/poor-mans-batch-encoding-with-handbrake
https://www.hanselman.com/blog/BatchConvertingADirectoryTreeOfVideosRecursivelyWithHandbrakeForStreamingToAnXbox360.aspx
https://jorge.fbarr.net/2012/05/19/batch-convert-videos-using-handbrake-and-a-script/

Instalacja Ubiquiti Unifi NVR Video na systemie Ubuntu Server 16.04 – wstępna konfiguracja systemu i zdalnego dostępu

Spis treści:

  1. Instalacja i konfiguracja serwera SSH
  2. Instalacja programu cockpit – programu służącego do monitorowania pracy serwera
  3. Instalacja środowiska graficznego xfce oraz serwera VNC
  4. Instalacja Ubiquiti Unifi VNR
  5. Otwarcie portów dla Unifi NVR, SSH oraz VNC
  6. Instalacja Google Chrome
  7. Instalacja dodatkowego oprogramowania ułatwiającego administrację serwerem oraz jego  konfiguracja

 

  1. Instalacja i konfiguracja serwera SSH
    sudo apt install openssh-server
    sudo nano /etc/ssh/sshd_config

    Zmiana konfiguracji – sekcji #Authentication:

    #PermitRootLogin prohibit password 
    na 
    PermitRootLogin no

    Restart usługi:

    sudo systemctl restart ssh
    sudo systemctl status
  2. Instalacja programu cockpit – programu służącego do monitorowania pracy serwera:
    sudo add-apt-repository ppa:cockpit-project/cockpit
    sudo apt update
    sudo apt install cockpit
    sudo systemctl enable cockpit

    Interfejs Cockpit będzie dostępny pod adresem: https://IPserwera:9090

  3. Instalacja środowiska graficznego xfce oraz serwera VNC, stworzenie pliku konfiguracyjnego:
    sudo apt-get install xfce4 xfce4-*
    sudo apt-get install vnc4server
    sudo nano /etc/systemd/system/vncserver@:5.service

    Należy wpisać następującą instrukcję, zmieniając nazwę użytkownika:

    [Unit]
    Description=Start TightVNC server at startup
    After=syslog.target network.target
    
    [Service]
    Type=forking
    User=nazwa_uzytkownika
    PAMName=login
    PIDFile=/home/nazwa_uzytkownika/.vnc/%H%i.pid
    #ExecStartPre=/usr/bin/vncserver -kill %i > /dev/null 2>&1
    ExecStart=/usr/bin/vncserver -depth 24 -geometry 1024x768 %i
    ExecStop=/usr/bin/vncserver -kill %i
    
    [Install]
    WantedBy=multi-user.target

    Restart demona i uruchomienie serwera VNC raz jeszcze (będziemy poproszeni o podanie hasła):

    sudo systemctl daemon-reload
    vncserver

    Stworzenie pliku konfiguracyjnego serwera VNC:

    nano /home/nazwa_uzytkownika/.vnc/xstartup

    Należy do pliku wpisać następującą zawartość:

    #!/bin/sh
    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    startxfce4 &

    Uruchomienie usługi VNC i dodanie jej do autostartu:

    sudo systemctl start vncserver@:5.service
    sudo systemctl enable vncserver@:5.service
  4. Instalacja Ubiquiti Unifi VNR:
    sudo apt-get update
    sudo apt-get upgrade
    wget https://dl.ubnt.com//firmwares/ufv/v3.9.5/unifi-video.Ubuntu16.04_amd64.v3.9.5.deb
    sudo dpkg -i unifi-video.Ubuntu16.04_amd64.v3.9.5.deb
    sudo apt-get update --fix-missing

    Restart usługi:

    sudo /etc/init.d/unifi-video restart
  5. Otwarcie portów dla Unifi NVR, SSH, VNC oraz Cockpit
    sudo ufw allow 7443/tcp
    sudo ufw allow 7442/tcp
    sudo ufw allow 7004/tcp
    sudo ufw allow 6666/tcp
    sudo ufw allow 7080/tcp
    sudo ufw allow 7445/tcp
    sudo ufw allow 7446/tcp
    sudo ufw allow 7447/tcp
    sudo ufw allow 5905/tcp
    sudo ufw allow 22/tcp
    sudo ufw allow 9090/tcp
  6. Instalacja Google Chrome:
    wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
    echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
    sudo apt-get update
    sudo apt-get -y install google-chrome-stable

     

  7. Instalacja dodatkowego oprogramowania ułatwiającego administrację serwerem oraz jego  konfiguracja.
    Dostosowanie środowiska (terminalu) – wygenerowanie ustawień na stronie http://bashrcgenerator.com/ i wklejenie ich do ~/.bashrc:

    nano ~/.bashrc
    $tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"

    Instalacja oprogramowania TMUX, umożliwiającego zapamiętanie sesji i powrót do niej po ponownym zalogowaniu do maszyny (np, przez Putty). Innym programem tego typu jest  SCREEN

    sudo apt install tmux
    tmux
    tmux attache - powrót do sesji
    ss (socket statistics) -ss -ant

    Ubiquiti do podglądu kamer poleca przeglądarkę Google Chrome. Jednak z testów wynika, że przeglądanie kamer w Firefox również nie stwarza problemów, a działa może nawet lepiej od Chrome, ponieważ nie ma problemu z zachowaniem certyfikatu.
    W jednej jak i drugiej przeglądarce występuje problem – komunikat: „Unable to load Live Stream”. Problem ten jest związany z certyfikatem serwera na porcie 7446 (nie z 7443 – domyślnym porcie, który służy do podglądu kamer). Aby rozwiązać problem należ zaakceptować i zapamiętać certyfikat serwera na porcie 7446.

    Źródła:
    https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/how-to-install-vnc-on-ubuntu-16-04.html
    https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-google-chrome-on-ubuntu-16-04.html

VirtualBox – zapisanie stanu maszyny

Poniżej przedstawiony jest skrypt zamykający maszyny wirtualne a następnie zamykający hosta (system Windows).

"C:\VirtualBox\VBoxManage.exe" controlvm "Ubuntu Server" savestate
"C:\VirtualBox\VBoxManage.exe" controlvm "Ubuntu Minimal" savestate
shutdown /s /t 10

 

MikroTik – blokowanie stron WWW

Do tej pory aby zablokować stronę WWW należało posługiwać się regułami L7 (wyrażeniami regularnymi Regexp), lub Web Proxy. Niestety, używając tych funkcji RouterOS, blokowanie wielu stron WWW mogło spowodować nadmierne obciążenie CPU.
Poczynając od wersji RouterOS 6.36,  istnieje możliwość używania nazw DNS w address-list. Daje to ogromne możliwości firewalla – budowanie dynamicznych list IP. Blokowanie stron używając Dynamic Lists nie powoduje już dużego obciążenia CPU.

Poniżej przedstawiony jest przykład blokowania strony chomikuj.pl wszystkim komputerom w sieci oprócz komputera o adresie IP: 192.168.5.107:

miktorik - blokowanie stron, ustawienia firewalla

Na powyższym zrzucie ekranu widać, że MikroTik rozwiązał nazwę DNS chomikuj.pl i umieścił dynamiczne wpisy IP w Address Lists.  W tym przypadku strona chomikuj.pl dostępna jest pod dwoma adresami IP.

ThinkPad Lenovo E570 Windows 10 i Office 2016 – migający ekran

Na laptopie Lenovo ThinPad E570 z zainstalowanym oprogramowaniem Windowsem 10 Pro i Office 2016 dla Użytkowników Domowych i Małych Firm został zaobserwowany nietypowy problem. Mianowicie po ostatniej aktualizacji systemu i uruchomieniu któregokolwiek programu pakietu Office monitor zaczynał migać, uniemożliwiając dalszą pracę na sprzęcie. Symptom bardzo podobny do uszkodzonej taśmy matrycy lub układu graficznego.

Dopiero po podłączeniu zewnętrznego monitora do portu VGA problem znikał, matryca z powrotem świeciła normalnie.

Problem został opisany na stronie Microsoftu: https://support.microsoft.com/en-us/help/2768648/display-issues-in-office-client-applications , z tą różnicą, że w niniejszym przypadku skutek odniosło WŁĄCZENIE a nie jak napisano w artykule wyłączenie sprzętowego przyśpieszania grafiki (Plik -> Opcje -> Zaawansowane -> sekcja Wyświetlanie -> „Włącz sprzętowe przyśpieszanie grafiki”)

Poniższy film przedstawia objawy i rozwiązanie problemu.

https://www.youtube.com/watch?v=139xgJ4kDc8&feature=youtu.be

 

Pakowanie logów przy pomocy programu 7-zip

Poniższy skrypt pozwala na skompresowanie za pomocą programy 7-zip każdego pliku .txt znajdującego się w katalogu Logs osobno.

FOR %%i IN ("C:\Program Files (x86)\Syslogd\Logs\*.txt") DO (
"C:\Program Files (x86)\Syslogd\Logs\%%i.7z" %systemroot%\7zip\x64\7za.exe a -t7z "C:\Program Files (x86)\Syslogd\Logs\%%~ni.7z" -mx9 -aoa "%%i"
)

 

Windows command line ( CMD ) – data , data wczorajsza

Poniższy skrypt pozwala w systemie Windows wyświetlić bieżącą datę za pomocą linii poleceń (CMD):

for /f "tokens=1 delims=^/ " %%i in ('date /t') do set DWEEK=%%i
for /f "tokens=2 delims=^/ " %%i in ('date /t') do set DMDAY=%%i
for /f "tokens=3 delims=^/ " %%i in ('date /t') do set DMONT=%%i
for /f "tokens=4 delims=^/ " %%i in ('date /t') do set DYEAR=%%i
for /f "tokens=1 delims=^/^: " %%i in ('time /t') do set DHOUR=%%i
for /f "tokens=2 delims=^/^: " %%i in ('time /t') do set DMINU=%%i
rem for /f "tokens=1 delims=^/^: pa" %%i in ('time /t') do set DHOUR=%%i
rem for /f "tokens=2 delims=^/^: pa" %%i in ('time /t') do set DMINU=%%i
set DATE=%DYEAR%%DMONT%%DMDAY%%DWEEK%_%DHOUR%%DMINU%
ECHO %DATE%
pause

Poniższy skrypt pozwala w systemie Windows wyświetlić wczorajszą datę za pomocą linii poleceń (CMD):

@echo off

set yyyy=

set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))

if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100

set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1

if "%dayCnt%"=="" set dayCnt=1

REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100

:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through

:SET31
set /A dd=31 + %dd%
goto CHKDAY

:SET30
set /A dd=30 + %dd%
goto CHKDAY

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto CHKDAY

:SET29
set /A dd=29 + %dd%
goto CHKDAY

:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%

REM Set IIS and AWS date variables
set IISDT=%yyyy:~2,2%%mm%%dd%
set AWSDT=%yyyy%-%mm%-%dd%

ECHO %AWSDT%