Pokazywanie postów oznaczonych etykietą chmura. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą chmura. Pokaż wszystkie posty

Nieprzekłamane kopiowanie do schowka - schowek w Linuksie

Go to start of metadata
Czasami problemem jest przeniesienie niezmienionych danych do schowka. Nie dodarłem do informacji, kiedy następuje modyfikacja kopiowanych przez schowek danych. Spotkałem się z tym przy kopiowaniu kluczy niesymetrycznych, np. z pliku na stronę www. Zakładam, ze problemem moze być np.: próba podmienianie "białych" znaków (jak spacja), na wartość liczbową zero, reprezentującą koniec stringu. Rozwiązaniem okazało sie użycie programu xclip:
yum install xclip

Tak wygląda komenda, która rozwiązała problem z kopiowaniem danych klucza:
xclip -sel clip < ~/.ssh/id_rsa.pub

Inny przykład użycia:
echo -n "testowy" | xclip -i

Wyjście (output):
xclip -o
xclip -o > file.txt

Analogicznym programem do xclip jest xsel:
xsel > ~/plik
ping -c 4 www.o2.pl | tee | xsel -i

Dostępne są trzy schowki: PRIMARY, SECONDARY i CLIPBOARD
PRIMARY – Schowek dostępny za pośrednictwem trzeciego przycisku myszki.
SECONDARY – Niewykorzystywany (zazwyczaj).
CLIPBOARD – Dostęp za pomocą standardowych skrótów (ctrl+c) i menu aplikacji: cut/copy/paste.

Kopiowanie do schowka CLIPBOARD:
cat data.txt | xclip -selection XA_SECONDARY
ping -c 4 www.o2.pl | tee | xsel -i -b

Pracując na maszynie wirtualnej, gdy gościem jest Linux, to dane z konsoli możemy przenieść do hosta za pomocą wspólnego schowka:
echo plik.txt | xclip -selection clipboard

Zrzut zawartości konsoli tty (ekranu) do schowka, a następnie do pliku:
setterm -dump 1
xclip -i tty1.dump

Monitorowanie zmiany pliku - inotifywait z paczki inotify-tools.

W Amazon Web Services (AWS; Cloud Computing Services), w instancji używanej przez LOT, spotkaliśmy się z ciekawym problemem. Grzegorz zdiagnozował, że przestało działać wykorzystywane polecenie inotifywait. Po sprawdzeniu, czy nie ma to związku z udziałem NFS'a i opcjami montowania systemu plików, wstępnie wiążemy ten fakt z instalacją nowego jadra, co rozwiązywało problem z Dirty COW (CVE-2016-5195). 
Do instalacji wymagane jest repozytorium epel:
yum install inotify-tools

Ponieważ pakiet inotify-tools korzysta z funkcji jądra systemu (od wersji 2.6.13) monitorującej system plików, prawdopodobne jest to, że jakieś oprogramowanie przestało działać. Dlatego poniższe rozwiązania wykorzystują bardziej klasyczne mechanizmy. Metoda szybsza, bazująca na czasie modyfikacji pliku (nie dostępu, tylko modyfikacji!). Zmienna $1 odpowiada za przekazanie nazwy pliku, a zmienna $2 za ustalenie czasu pomiędzy testami. Sleep nie zużywa zasobów procesora, a akceptuje czasy jak np.: 1, 0.1, 0.001, więc mamy duże możliwości ustawienia czasów reakcji.
while "$(stat -c%Y ""$1"")" "$(sleep ""$2""; stat -c%Y ""$1"")" ] ; do true; done

Metoda wolniejsza, lecz nie powolna, bazująca na dokładnej analizie pliku:
while "$(md5sum ""$1"")" "$(sleep ""$2""; md5sum ""$1"")" ] ; do true; done

Poprzednie komendy, oraz poniższe różnią się sposobem porównywania plików. Przykłady różnią się uwzględnieniem, lub też nie, ścieżki dostępu i nazwy pliku.
while "$(md5sum < ""$1"")" "$(sleep ""$2""; md5sum < ""$1"")"  ] ; do true; done

Analogicznie, jak powyżej, wersja uproszczona: 
md5first=0
md5second=0
while "$md5first" "$md5second"  ] ; do.
    md5first=( $(md5sum "$1") )
    sleep "$2"
    md5second=( $(md5sum "$1") )
done

Oraz wersja nieuwzględniająca nazwy i ścieżki pliku:
md5first=0
md5second=0
while "$md5first" "$md5second"  ] ; do.
    md5first=`md5sum "$1" |cut -f 1 -d " "`
    sleep "$2"
    md5second=`md5sum "$1" |cut -f 1 -d " "`
done