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.
Wszystkie wpisy, których autorem jest Krzysztof Jozwiak
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.
PHP: curl oraz logowanie przez login i hasło
W moim projekcie musiałem uzyć curl oraz logowanie przez login i hasło (w przeciwnym wypadku wystarczyło by użycie fopen). Wobec tego użyłem kodu podobnego do tego poniżej:
protected function UseCurl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$this->username:$this->password"); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); $output = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); return $output; }
Proszę zwrócić uwagę na część z CURLOPT_USERPWD…
PHP i autoload klass
W nowszych wersjach PHP występuje nowa funkcja odpowiedzialna za ładowanie klass spl_autoload_register(’function_name’) w przeciwienstwie do poczciwego __autoload(). Wobec tego aby móc znowu automatycznie ładować klasy należy stworzyć kod podobny do poniższego:
function my_autoload($class_name) { include "lib/class/$class_name".'.class.php'; } spl_autoload_register('my_autoload');
SVN i duże repozytorium oraz sciąganie tylko kawałka drzewa
Jeżeli chcesz pracować tylko na jakimś fragmencie drzewa zainteresuj się poniższą komendą:
svn checkout file:///var/svn/repos mom-empty --depth empty
Zwróć uwagę na –depth empty. Pozwala ona sciągnąć dane tylko konkretnego katalogu bez rekursji. Mnie to umożliwiło dodanie do drzewa projektów w svn tylko jednego nowego katalogu bez ściągania całej zawartości drzewa przy checkout…
Słuchanie e-książek – Android i Ivona
Postanowiłem dzisiaj zmusić mój tablet do czytania książek. Okazało się to wyjątkowo proste:
- Instalujemy syntezator mowy Ivona z sklepu google play
- Instalujemy głos do Ivony
- Zmieniamy w ustawieniach domyślny syntezator mowy
- Instalujemy Moon+ Reader Pro – program do czytania ebooków (płatny)
I gotowe, można słuchać książek korzystając programu Moon+ Reader Pro…
Linki:
Lighttpd – index plików w katalogu
Zaraz po zainstalowaniu Lighttpd zaczeło mnie irytować ze nie widzę plików w katalogu. Nie zawsze mam plik indeksu a w wielu przypadkach mam katalogi i chce móc spokojnie między nimi nawigować.
Rozwiązanie tego problemu jest proste, włączamy direktywę server.dir-listing:
## virtual directory listings server.dir-listing = "enable"
OpenWRT i php date problem
Jeżeli masz problem jak poniżej:
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /www1/php_xml/lib/Smarty-3.1.14/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 183 Fatal error: strftime(): Timezone database is corrupt - this should *never* happen! in /www1/php_xml/lib/Smarty-3.1.14/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 183
To rozwiązanie jest proste, należy doinstalować pakiety z lokalizacją daty:
#opkg install zoneinfo-core zoneinfo-europe