Nerdblog.pl

Ruby 1.9.1 and MySQL gem

Dodano: 13.06.2009

Symptoms (may be little different):

gem install mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

(...)

Telnetowanie w skryptach

Dodano: 21.05.2009

Być może korzystając z mojego skryptu rsget-mod lub w innej sytuacji, potrzebowaliście połączyć się z jakimś zewnętrznym urządzeniem w celu - ja wiem? - restartu routera, zmiany konfiguracji itp. Najczęściej - bo najprościej - używa się do takiego celu telnetu, ponieważ to najbanalniejszy protokół i twórcom sprzętu prościej go implementować niż takie SSH. Pojawia się jednak problem - jak z poziomu skryptu połączyć się z urządzeniem?

Pierwsza rzecz, która przyszła mi do głowy to skierowanie strumienia STDIN do programu klienckiego telnet. Niestety, klasyczne przekazanie strumienia nie działa w tym przypadku (trudne, żeby działało). Potem pomyślałem o netcacie - 'szwajcarskim scyzoryku do TCP/IP'. Niestety, on też nie chciał działać jak trzeba. Męczyłem się, kombinowałem, w końcu jednak Michał Górny przypadkowo naprowadził mnie na dobrą drogę. Przypomniałem sobie jak w zenity rozwiązany jest progressbar i mnie olśniło. Trochę kombinowania i mam rozwiązanie.

Na początku należy samodzielnie połączyć się z panelem, żeby zobaczyć jak wygląda proces autoryzacji. W moim przypadku trzeba połączyć się z ip 192.168.2.1 wpisać login (root) i hasło, a następnie wydać polecenie (u mnie: reboot, potem y). Gdy już wiemy jak to wygląda, konstruujemy banalny skrypcik:

(
	echo "open 192.168.2.1";
	sleep 0.5;
	echo "root";
	sleep 0.5;
	echo "haslo";
	sleep 0.5;
	echo "reboot";
	sleep 0.2;
	echo "y"; 
) | telnet

Jak to działa? Uruchamia telnet i po kolei wpisuje mu w ten sam sposób jak wpisywałaby to osoba z klawiatury kolejne polecenia - połączenie z serwerem, następnie wszystko to co powinno pójść do serwera. Zwróćcie uwagę na te wszystkie polecenia sleep - mają one na celu przytrzymania skryptu na czas łączenia się oraz reakcji sprzętu na wpisywane polecenia. Bez nich wszystko wysłałoby się wszystko równocześnie i zostałoby zagubione w trakcie.

Jak widać, napisanie takiego skryptu jest wbrew pozorom banalne. Mam nadzieję, że przyda się ono osobom korzystającym z mojego skryptu oraz tym, które potrzebują takiego rozwiązania u siebie. Happy hacking ;)

Jogger.pl - Dashboard - subskrybowani (user.js)

Dodano: 12.05.2009

Napisałem prościutki (dosłownie kilkulinijkowy) skrypt, który do Joggerowego Dashboarda generuje po prawej stronie na górze 'okienko' do dodawania osób do listy śledzonych przez bota.

Do pobrania z mojego serwera.

Image "Progressbar"

Dodano: 12.04.2009

Obudziłem się dzisiaj rano i wiedziałem momentalnie co chcę zrobić - uruchomiłem komputer i zacząłem pisać skrypt, który już od dawna siedział mi po głowie. Efekty mojej pracy przerwane jedynie wielkanocnym śniadaniem można ujrzeć poniżej:

(...)

Korzystanie z internetu w laptopie z wykorzystaniem GPRS i komórki

Dodano: 26.02.2009

Wpis został napisany z myślą o systemie Archlinux oraz komórce firmy Nokia. Mimo to warto sprawdzić czy działa na innych konfiguracjach.

Do napisania tej notki zainspirował mnie wyjazd na "wieś" do ojca. Rodzic mój mieszka bowiem w bardzo małej mieścinie / wiosce (kilka domów na krzyż, dookoła las) gdzie dostęp do internetu jest bardzo ograniczony. Żaden poważny provider nie chce bowiem pociągnąć kabli przez co tata zmuszony jest do korzystania z bezprzewodowego modemu EDGE/3G (jak łatwo się domyślić raczej to pierwsze niż drugie). Konfiguracja tego modemu zarównno pod systemem MS Windows jak i Linuksem jest cholernie upierdliwa, więc postanowiłem skorzystać z faktu posiadania komórki w Plusie z pakietami internetowymi.

Jak to działa

Jeśli posiadasz komórkę w Plus GSM i jest to Mix lub Simplus (oferta na abonament nie posiada pakietów Internet - niestety) (no, trochę nie miałem racji - pakiety też są i ponoć fajne - przepraszam) to zapewne wiesz, że istnieją pakiety z dodatkowymi usługami. Najpopularniejszy jest na pewno SMS za 1 grosz czyli pakiet 500 SMS za 5 PLN. Są też dwa pakiety - 20 i 50 MB dla starej oferty (MixPlus III) i 25 i 60 MB dla nowej (MixPlus IV). Osobiście uważam nową ofertę za megafail, ponieważ ma ona naliczanie co 100 KB zamiast co 1 bajt tak jak moja (III). Mimo to pakiety są i można z nich korzystać.

Instalacja i konfiguracja

Na początku sprawdź, czy ustawienia komórki są poprawne. Tak, dobrze słyszałeś - sprawdź najpierw telefon. Ściągnij ustawienia ze strony Plusa, poustawiaj co trzeba w menu, upewnij się, czy konta danych są ustawione na Internet, a nie na WAP i tak dalej. Gdy sprawdzisz, że wszystko działa, a korzystanie z przeglądarki w komie zmniejsza ilość pozostałą na pakiecie, dopiero przejdź dalej. Znam sytuacje gdy komuś zjadło całą kasę z konta (25 zł) tylko dlatego, że po wgraniu ustawień nie włączył on w konfiguracji korzystania z Internet zamiast WAP. Nie popełnij tego błędu!

Dobrze, mamy gotową komórkę. Ponieważ posiadam Nokię, opis będzie dotyczył jej, twój model telefonu może mieć np inny wpis z /dev. Jeśli chcesz korzystać z Bluetooth to musisz się pobawić samodzielnie, bo nie mam pojęcia jak to zrobić - coś z /dev/rfcomm0, nie znam szczegółów. Opieram sie o swoje doświadczenia z kablem DKU-2. Powinno działać z innymi, może też zadziałać z innymi modelami telefonów.

Zainstaluj paczki: ppp, wvdial. Dopisz do listy ładowanych przez kernel modułów ppp_generic - bez tego wvdial się wykrzaczy. Teraz zapuść wvdialconf. Powinien wygenerować podstawowy plik konfiguracyjny. Zmodyfikuj go dodając pokolorowane linie (reszta to mój plik konfiguracyjny - jeśli coś nie będzie działać, skopiuj całość na chama i podmieniaj kolejne linijki z twoim gotowcem aż zaskoczy):

[Dialer Defaults]
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
; to może nie być konieczne, muszę sprawdzić
Init3 = AT+CGDCONT=1,"IP","www.plusgsm.pl"
Modem Type = USB Modem

ISDN = 0
Phone = *99#

Modem = /dev/ttyACM0
Baud = 460800
Username = ''
Password = ''
Auto DNS = on
Stupid Mode = on

Niektóre kursy zamiast *99# każą podać numer telefonu w stylu *99***1#. U mnie to nie zadziałało (a zajęło mi dużo czasu szukanie dlaczego), więc pewnie Tobie nie będzie potrzebne (to do wielu punktów dostępu).

Jesteśmy prawie na końcu drogi. Teraz edytuj /etc/resolv.conf i dopisz te dwie linijki:

nameserver 212.2.96.51
nameserver 212.2.96.52

OK, po wpianiu wvdial Internet powinen zaskoczyć. Puść ping google.pl, sprawdź czy strony się ładują itd. Jeśli możesz dostać się do nich po IP, a nie po nazwie domeny, zapomniałeś edytować resolv.conf albo masz upierdliwego dhcpd. Ja go przystopowałem za pomocą chattr +i /etc/resolv.conf, ale na pewno da się to załatwić bardziej elegancko. Jeśli net w ogóle się nie ładuje, upewnij się czy załadowałeś moduł ppp_generic, czy konfiguracja wvdial jest poprawna itd. Gdy wszystko zostało wykonane, a internet nadal nie chce wstać to ci nie pomogę. Google, google, google.

Post scriptum

Korzystanie z internetu na laptopie jest drogie. Radzę wyłączyć automatyczne pobieranie obrazków i zainstalować w Firefoksie wtyczki typu NoScript lub Flashblock. Jabber nie powinen kosztować aż tak wiele, ale mimo to radzę się pilnować. Napisałem bardzo prosty skrypt w Bashu, który pomaga "liczyć kilobajty":

#!/bin/bash
while true; do
   echo -ne "\r $(ifconfig ppp0 | awk '/RX bytes/ { print $3$4" "$7$8 }')  ";
   sleep 1;
done
 

Wpis został popełniony na Asusie Eee PC w autobusie PKS Bydgoszcz podczas jazdy z Torunia do Bydgoszczy.