Problem:
W przypadku chęci mapowania dysków należy znaleźć vhost-a na podstawie numeru partycji, problem jest tylko jeden: numer ten jest w postaci szesnastkowej.
Archiwum miesiąca: listopad 2013
Expect: Wprowadzenie
Poniższy kod pozwala na połączenie ssh, automatyczne podanie użytkownika i hasła, wykonanie prostej komendy, przejście do katalogu /tmp i oddaje władzę w ręce w użytkownika skryptu. Taka mała wprawka do programowania w tcl/expect…
#!/usr/bin/expect ## usage if no options if {[llength $argv] != 3} { puts "usage: ssh_login" exit 1 } # setup variables set timeout 20 set ip [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] # call ssh command spawn ssh "$user\@$ip" # give password expect "password:" send "$password\r"; # give commands when you see "]#" mean all welcome messages are showed expect "]#" send "touch ~/I_was_HERE2.txt\r" send "cd /tmp\r" # give control to user interact
Sed: usuwanie „inline” linii z pliku
Problem:
W pewnym pliku logów miałem stare wpisy i chciałem szybko usunąć. Wzorzeć był znany ale zabawa z tymczasowymi plikami i grepem raczej nie wchodziła w grę (nie chciałem zgubić logów właśnie zapisywanych).
Wpisy do usunięcia miały postać (chodziło o datę):
2013-08-08 11:39:17 temp:21.25
Rozwiązanie:
Sed z opcją -i pozwala zmieniać pliki w locie (inline):
sed -i "/2013-08-08/d" temperature_all.txt
Sed: zmiana w plikach z wykorzystaniem zapamiętywania wzorców (inline):
Problem:
Piszę sobie hobbystycznie małą aplikację to zarządzania domowymi urządzeniami. Jednym z nich jest Arduino z podczepionymi czujnikami temperatury i natężenia światła. Dane z czujników są zapisywane na karcie SD. Na początku format daty ustaliłem sobie dość dowolnie i wyglądał on tak:
10/07/13-20:03:23 photo:49
Jednak w trakcie pisania aplikacji doszedłem do wniosku iż potrzebuję nastepujący format daty:
2013-10-07 19:53:58 photo:399
Rozwiązanie:
Rozwiązaniem okazała się jednolinijkowa komenda sed-a:
sed -i -r 's/([0-9]+)\/([0-9]+)\/([0-9]+)\-/20\3-\1-\2 /' photo_all_*.txt
Opcja -i powoduje nadpisanie pliku, -r włącza wyrażenia regularne.