czwartek, 23 stycznia 2020

SFTP uruchamiane z linii poleceń bez hasła w Linux

Jeśli uruchamiasz SFTP, to klient odpyta się o hasło. Uniemożliwia to skorzystanie z SFTP np. w cron'ie. Da się jednak uruchomić klienta w tzw "batch mode". Wymaga to generowania i przesyłania sobie kluczy ssh. Pełna instrukcja jak to zrobić znajduje się tutaj: https://www.computerhope.com/unix/sftp.htm#Batch-Mode

środa, 22 stycznia 2020

Zmienne w bash'u w Linuxie

Najprostsze użycie zmiennej:

#!/bin/bash          
STR="Hello World!"
echo $STR
Na konsoli na wypisze string "Hello World!".

Tu ciut więcej:

#!/bin/bash          
FILENAME=/var/my-backup-$(date +%Y-%m-%d).tgz
tar -czf $FILENAME /home/me/
Zmienna $FILENAME to string dynamiczny, w skład którego wchodzi data w formacie rok-miesiąc-dzień, np. 20019-12-31. Program tar zarchiwizuje nam w pliku /var/my-backup-2019-12-21.tgz zawartość katalogu /home/me

I jeszcze króciutko o funkcjach i zmiennych lokalnych (local):

#!/bin/bash
HELLO=Hello 
function hello {
    local HELLO=World
    echo $HELLO
}
echo $HELLO
hello
echo $HELLO
Tu zmienna $HELLO przyjmuje najpierw wartość "hello", a po wykonaniu funkcji hello zmienna $HELLO zmienia wartość na "World".

zip i Linux

Kompresowanie plików.

Składnia:

zip [options] zipfile list_of_files_with_spaces

Skompresuj plik filename.txt do archiwum o nazwie myfile.zip:

$ zip myfile filename.txt

Wyciągnij z archiwum:

$ unzip myfile.zip
Uprzednio zarchiwizowany plik filename.txt zostanie wydobyty z archiwum.

Opcja -u czyli aktualizacja pliku w archiwum

$ zip –u filename.zip file.txt
W tym przypadku zostanie zaktualizowany plik file.txt w archiwum filename.zip

Opcja -m czyli usunięcie pliku źródłowego po udanej kompresji archiwum:

$ zip –m filename.zip file.txt
Tu zostanie usunięty plik file.txt

Opcja -r (recursively) czyli archiwizacja całego katalogu:

$ zip –r filename.zip directory_name
Tu zostanie skompresowany folder o nazwie directory_name

cron w Linuxie

Listowanie istniejących zadań crontaba:
$ crontab -l
Edycja zadań crontaba:
$ crontab -e 
Znaczenie poszczególnych gwiazdek w pliku crontaba: Czyli:
  • pierwsza gwiazdka - minuta wykonywania zadania
  • druga gwiazdka - godzina wykonywania zadania
  • trzecia gwiazdka - dzień wykonywania zadania
  • czwarta gwiazdka - jest odpowiednikiem miesiąca od 1 do 12 lub jan - dec (z angielska)
  • no i piąta gwiazdka - jest dniem tygodnia, gdzie 0 i 7 to niedziela! Albo można zapisać z angielska (he he) od sun do sat
Po gwiazdkach następuje komenda systemu Linux lub skrypt. Aby uniknąć niespodzianek należałoby stosować bezwzględne ścieżki dostępu.

Tworzenie zakresów lub częstotliwości:

  • */5 * * * * - wykonaj polecenie co pięć minut każdego dnia
  • 0 13-15 * * * – wykonaj polecenie o 13:00, 14:00 i 15:00 każdego dnia
  • 15 23 * * mon-fri – oznacza zadanie wykonywane codziennie od poniedziałku do piątku o godzinie 23:15
  • 0 4 * * mon-fri/2 – uruchomi polecenie w każdy poniedziałek, środę i piątek o godzinie 4:00

No i w całości:

00 */12 * * * /home/wacek/scripts/rename_files.sh 2>&1
Czyli: co dwanaście godzin (z moich obserwacji o 12:00 i 24:00) wykonaj skrypt z katalogu użytkownika "wacek" i jego katalogu "scripts" plik wykonywalny o nazwie "rename_files.sh"