Skip navigation

Tag Archives: Shell

Ostatnio natknąłem się na problem z uruchamianiem przez SSH skryptów, które startują procesy w tle. Skrypt uruchamiany lokalnie działał poprawnie a zdalnie przez ssh ‘wisiał’. Okazuje się że problem mozna zasymulować w prosty sposób. Wystarczy napisać prosty skrypt uruchamiający zadanie w tle:

#!/bin/bash
nohup sleep 300 &

Po uruchomieniu tego skryptu przez SSH, klient ssh czeka na zakończenie polecenia sleep.

Udało mi się znaleźć dwa rozwiązania:
– uruchomienie ssh z parametrem -tt (wynika z tego że nohup nie działa poprawnie jeśli skrypt nie jest podpięty do terminala)
– przekierowanie deskryptorów wejścia/wyjścia (również dla błędów).

W naszym niesamowicie skomplikowanym skrypcie można to zrobić np. tak:

#!/bin/bash
exec >/dev/null /tmp/error.log
nohup sleep 300 &

Przy konfiguracji usług sieciowych z wykorzystanie protokołu SSL niezbędne jest narzędzie do testowania.
Ja do tego celu zawsze używałem polecenia openssl s_client…
Read More »

XML że względu na swoją budowę wymaga specyficznych narzędzi do obróbki. W linuksie mamy ich na szczęście kilka, a przy odrobinie wysiłku możemy napisać własne wykorzystując różne dostępne biblioteki czy moduły.

Pierwszym narzędziem na mojej liście jest xmllint. Spośród wielu opcji najczęściej wykorzystuję formatowanie XML’a:

bash$> cat test.xml | xmllint -format -

… oraz walidację względem pliku DTD bądź schematu:

bash$> xmllint --valid test.xml

Powyższe wywołanie sprawdzi poprawność pliku XML względem schematu/pliku DTD wskazanego wewnątrz pliku. Jeśli chcmy jawnie podać lokalizację schetu/DTD możemy wykorzystać opcje –dtdvalid URL lub –schema shcema-file.xsd. Oczywiście xmllint posiada wiele innych przydatnych opcji więc warto zerknąć do manuala.

Od kilku miesięcy pracuję w korporacji, gdzie niestety – jak to w korporacji – standardowym systemem desktopowym jest tzw. produkt pewnej dużej firmy z Redmond. Aby utrzymać swoją produktywność na rozsądnym poziomie zaopatrzyłem się w maszynę wirtualną z linuksem. Problem w tym, że do celów prezentacji obrabianych przeze mnie danych i tak wykorzystuję Excel’a.

Szukając jakiegoś szybkiego sposobu na kopiowanie danych z konsoli do arkusza znalazłem bardzo prosty program o nazwie xclip, który kopiuje do schowka to co dostaje na standardowe wejście. Dodając do tego współdzielony schowek między maszyną wirtualną maszyną a Windowsem – mamy szybki i efektywny sposób na kopiowanie danych. Przerzucałem w ten sposób po kilka tysięcy wierszy bez zauważalnego opóźnienia. Aby dane wklejane do arkusza były automatycznie rozbijane na kolumny powinny wykorzystywać znak tabulacji jako separator.

Przykładowe wywołanie wraz z podmianą przecinka na znak tabulacji:

 Bash$ ./skrypt.sh | sed 's/,/\t/g' | xclip -selection clipboard

A potem już tylko <Ctrl-V>…