Blog

Bash - sprawdzenie czy proces jest aktywny z namniejszymi uprawnieniami

Bash - sprawdzenie czy proces jest aktywny z namniejszymi uprawnieniami

Musiałem zrobić skrypt gdzie odpytuję usługi i sprawdzam czy "żyją" i podaję kod wyjśćia dla nagiosa. Wymaganie było aby zrobić to przy jak najmniejszym nadawaniu uprawnień. Niby prosta komenda systemctl is-active *.service jest dobra ale zdalne wykonanie skryptu przez nrpe nie chciało zaskoczyć. Czały cas w logach były komunikaty o u słabych uprawnieniach Skrypt wykonałem w Bash-u zaprzęgając do tego poczciwą komendę ps. Reszta to już tylko [...] Czytaj więcej

Bash - generowanie hasła

Bash - generowanie hasła

Jest wiele sposobów na wygenerowanie hasła. Służą do tego wyspecjalizowane programy(pwgen, keepass itp). Link do tej strony pokazuje "ocean możliwości". Można również samemu sobie stworzyć automat w postacji skryptu bash. Bash się do tego nadaje idealnie. #!/usr/bin/env sh sumaZnakow='16' probkiHasel='6' #opcja z argumentami #sumaZnakow=$1 #probkiHasel=$2 echo "Generowanie $probkiHasel haseł. Hasło ma długość $sumaZnakow znaków" for ((n=0; [...] Czytaj więcej

BASH - spacje, spacje, spacje

BASH - spacje, spacje, spacje

Świat nie jest idealny. Jednym z wielu aspektów, które obrazują nam taki obraz świata są przyzwyczajenia w tworzeniu plików i katalogów. Według tzw "świata *nixowgo" pliki/katalogi powinno się tworzyć bez spacji aby późniejsze przetwarzanie nie powodowało problemów. W swiecie windows-a nie ma to większego znaczenia i system ten "przyzwyczaił" ludzi do tworzenia nazw plików i katalogów tak jakby mieli napisać krótki esej. Aby w Linuksie obejść [...] Czytaj więcej

Czas epoki unix-a - konwersja

Czas epoki unix-a - konwersja

Czas w Linuksie liczymy wg tzw epoki unix-a. Co to znaczy? Jeśli wydamy komendę w Linuksie (terminal) date "+%s" to otrzymamy wynik 1574511413 który nie jest czytelny dla człowieka. Przyzwyczajeni jesteśmy do innego schematu przedstawiania daty i czasu. Czas który widzimy pokazuje ile sekund upłyneło od daty 1970-01-01 00:00:00 UTC. Aby odczytać czas zapisany w notacji unix-owej możemy użyć komendy date -d @1574511413 Możemy również użyć perla [...] Czytaj więcej

Kontrola sesji użytkowników w Linuksie

Kontrola sesji użytkowników w Linuksie

Często słyszy się, że w terminalu/konsoli ciężko zarządza się zalogowanymi użytkownikami. To prawda - jeśli myślimy w perspektywie zarządzania Windowsami. W Linuksie też znajdziemy narzędzia, które pozwalają nam sprawnie zarządzać użytkownikami. Jest kilka możliwości. Pierwsza to znajome narzędzie who Za man-em who - show who is logged on Jeśli chcemy zobaczyć kto jest zalogowany w systemie to wydajemy komendę: who root@raspberrypi:~# who pi [...] Czytaj więcej

Bash - wyświetlenie plików w strukturze podobnych katalogów

Wyświetlenie plików (lub wpisanie ich do pliku) w pewnej usystematyzowanej strukturze katalogów. Katalogów jest bardzo dużo ja na potrzeby przykładu utworzyłem katalog-120 do katalog-130. Praca ręczna nigdy nie zostanie wzięta pod uwagę więc trzeba zrobić automat. Musimy wyświetlić pliki z pewnego przedziału np katalog-120 do katalog-129. Rozwiązań zapewne jest nieskończenie wiele. Pierwsze rozwiązanie wykorzystuje printf printf "$PWD/%s\n" [...] Czytaj więcej

Bash - pobieranie wartości z pliku xml

Czasami potrzebujemy przetworzyć plik xml. Najprawdopodobniej wszystkie liczące się języki programowania mają w swoich zasobach funkcje, które takie operacje realizują. Jeśli chodzi o bash-a to jest trochę inaczej ale jak na środowisko Linuksa przystało zrealizować to zadanie możemy różnymi innymi narzędziami. W systemie (u mnie OpenSuse 15.1) instalujemy potrzebne narzędzie: sudo zypper in xmlstarlet Za plik xml posłuży nam ogólnodostępny plik [...] Czytaj więcej

Filtrowanie logów poczty

Filtrowanie logów poczty

Potrzebowałem na szybko wyciągnąć wszystkie adresy IP z pliku /var/log/mail.log, które wylądowały w specjalnym folderze z niechcianą pocztą. IP-ki będą wprowadzone na czarną listę adresów. Wchodzimy do określonego folderu z niechcianą pocztą i wykonujemy polecenie: grep -h -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' * |sort|uniq |grep -v ".0$" |grep -v "127.0.0.1" Wyjaśnienie: Narzędzie grep jest świetnym narzędziem w powłoce BASH na [...] Czytaj więcej

Bash - wyodrębnianie danych IPTC XMP ze zdjęcia

Bash - wyodrębnianie danych IPTC XMP ze zdjęcia

Jeśli chcemy wydobyć jakąś pojedyńczą sekcję (fotografa, agencję lub opis) ze zdjęcia można użyć narzędzia exiv2. Wyodrębnienie całości metadanych ze zdjęcia do pliku: exiv2 -ea image.jpg Ta komenda utworzy plik o tej samej nazwie co zdjęcie z rozszerzeniem .exv Wstrzyknięcie tych samych danych z pliku .exv do zdjęcia: exiv2 -kia image.jpg Aby wyodrębnić konkretną sekcję np IPTC wydajemy komendę: exiv2 -PI image.jpg lub exiv2 -pi image.jpg Jeśli [...] Czytaj więcej

Bash - pojemność katalogu z filtrem na pliki

Bash - pojemność katalogu z filtrem na pliki

Zawartość skryptu. Skrypt posiada 2 zmienne. Zmienna $folder to obliczany folder. Zmienna $ext to rozszerzenie plików, które będą zliczane. Skrypt oblicza pojemność katalogu rekursywnie i ogranicza się tylko do plików jpg #!/bin/bash folder='/home/user/Obrazy' ext='.jpg' foldersize() { if [ -d $folder ]; then size=$(ls -alRF $folder/ | grep -i $ext | awk 'BEGIN {tot=0} { tot=tot+$5 } END { print tot }') countsize=${#size} echo "Znaków: [...] Czytaj więcej

Autoresponder dla kont pocztowych

W "najsurowszej" kombinacji usług pocztowych (postfix+dovecot+amavisd) dzięki którym możemy stworzyć własny system pocztowy nie ma funkcji autorespondera. Możemy szybko taką funkcję dodać do wspomnianej konfiguracji. W systemie Ubuntu instalujemy paczkę vacation. Pliki, które są istotne: ~/.vacation.db plik bazy tworzony podczas inicjalizacji. ~/.vacation.msg plik wiadomości autorepondera ~/.forward plik dzięki któremu przekazujemy otrzymaną [...] Czytaj więcej

Czytanie pliku w skrypcie linia po linii

Czytanie pliku w skrypcie linia po linii

Bardzo często trzeba w skryptach bash czytać pliki linia po linii i coś z tymi liniami robić. Bash posiada dwie pętle, które się do tego zadania nadają. for .. in .. ;do .. done i while .. ;do .. done Rozwiązanie dla pętli for nIFS=$IFS IFS=$(echo -ne "\n\b") for i in $(cat plik.txt);do echo $i done IFS=$nIFS Rozwiązanie dla pętli while while read i;do echo $i done < plik.txt

Skrypt sprawdzający kiedy wygaśnie domena

Skrypt sprawdzający kiedy wygaśnie domena

Dla Debiana/Ubuntu/Minta sprawdzamy czy mamy zainstalowany whois wydając w shellu polecenie: [ -f '/usr/bin/whois' ] && echo Zainstalowany || apt-get -y install whois #!/bin/bash dzis=$(date +%Y%m%d) whois='/usr/bin/whois' declare -a domeny='satkas.waw.pl jakasinnadomena1.tld jakasinnadomena2.tld' function sprawdz { local red=`tput setaf 1` local reset=`tput sgr0` local koncowka=${i##*.} if [ $koncowka == "com" ] then wynik=$( whois $i [...] Czytaj więcej

Przydatne polecenia w Zimbra

Przydatne polecenia w Zimbra

Jak chcemy cokolwiek zrobić w shellu w systemie Zimbra trzeba się przelogować na użytkownika zimbra su - zimbra Wyświetl wszystkich użytkowników domeny zmprov -l gaa domain.com Sprawdzenie jaki status ma użytkownik zmprov ga user@domain.com zimbraAccountStatus | grep zimbraAccountStatus | awk '{print $2}' Zablokowanie użytkownika zmprov ma user@domain.com zimbraAccountStatus lock Odblokowanie użytkownika zmprov ma user@domain.com [...] Czytaj więcej

Masowa konwersja zdjęć do mniejszych rozmiarów

Masowa konwersja zdjęć do mniejszych rozmiarów

Czasami potrzebujemy szybko zmniejszyć zdjęcia do określonej wielkości. Problem w tym, że nie wiemy z jakim zdjęciem mamy do czynienia (portret, panorama). Skrypt który ogarnia dwie rzeczy. Sprawdza czy zdjęcie jest portretem lub panoramą i zmniejsza po wielkości. Oczywiście z zachowaniem proporcji Otwieramy konsolę i wybieramy katalog w którym znajdują się zdjęcia. Po czym wykonujemy tzw jednolinijkowca: for i in `ls *.jpg`;do z=$(convert $i [...] Czytaj więcej

Usunięcie pustych folderów w bash-u

Usunięcie pustych folderów w bash-u

Czasami potrzeba usunąć puste foldery w określonej ścieżce. W bashu robi się to banalnie prosto. find . -type d -empty -delete wcześniej można sprawdzić jakie katalogi ów polecenie może nam usunąć. Zatem komenda find . -type d -empty -print pokaże nam wszystkie puste katalogi w określonej ścieżce Kropka (.) w komendzie określa aktualny katalog. Powyższa komenda działa rekursywnie

Podtrzymywanie "demona" przy życiu

Podtrzymywanie "demona" przy życiu

Aktualizuję firmowego Ubuntu Server z usługą ftp-a od wersji 8.04 poprzez systemową komendę do-release-upgrade. Aktualnie mam wersję 14.04. Podczas ostatniej aktualizacji do 14.04 usługa ftp zarządzana przez proftpd wywala mi się w nocy. Nie chciało mi się szukać po forach dlaczego co i po co. Mały skrypt zapuszczony w sesji screen daje pożądany efekt: while true; do sleep 45;pidof proftpd;if [ $? -eq 0 ];then echo "Demon nasluchuje"; else echo [...] Czytaj więcej

Wyszukać i usunąć pliki w Linuksie

Wyszukać i usunąć pliki w Linuksie

Jak równocześnie wyszukać i przeprowadzić na tych plikach pewne działania, np. usunięcie plików? find sciezka_do_katalogu -type f -name "*.jpg" -newermt 2015-01-01 ! -newermt 2016-12-05 -exec rm -f {} \; Co robi to polecenie? Szuka pliki jpg w przedziale czasowym od 2015-01-01 do 2016-12-05 i usuwa je z systemu.

Genrowanie plików w systemie Windows i Linux

Czasami zachodzi potrzeba wygenerowania sobie plików na potrzeby różnych testów. W Windows robię w ten sposób. Otwieram "Wiersz poleceń" i wpisuję: for /L %%a in (1,1,100) do fsutil file createnew plik-%%a.txt 0 W Linuksie otwieram konsolę i wpisuję: for i in `seq 1 100`;do touch plik-$i.txt;done I pod Windowsem i pod Linuksem skrypcik wygeneruje nam 100 plików o zerowym rozmiarze

Masowa zmiana nazwy plików poprzez dopisanie frazy

Potrzebowałem zmienić nazwę plików jpg poprzez dodanie określonej frazy. Czyli mam plik1.jpg, plik2.jpg itd i musze dodać na początku frazę satkas (satkas-plik1.jpg, satkas-plik2.jpg) W windows można to zrobić w powłoce. Menu start wpisuje cmd i otwieramy "Wiersz polecenia" (taki czarny ekran ;)) W otwartym oknie wpisujemy: cd ścieżka_do_katalogu_z_plikami dla upewnienia się sprawdzamy czy są pliki jpg dir *.jpg Jeśli wszystko się zgadza [...] Czytaj więcej

2011 - 2021 Satkas IT