Zaczęło się od tego, że byłem zmęczony pracą. Postanowiłem usiąść sobie, zrelaksować się i poprojektować trochę designy na kartce papieru. Sięgnąłem po ołówek i odkryłem, że jest niezaostrzony. Wziąłem kolejny - to samo. Wyszło na to, że na 5 ołówków mam 5 albo złamanych, albo całkiem nowych. No tak nie może być! Zabrałem się do poszukiwań...

Na życzenie smokka wrzucam tutaj mój super prosty styl z hackiem kolorującym tagi w Blipie.
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.
Wow, it's finally done! After 4 hours of hacking and digging through documentations, API references and three other plugins I finally wrote my own Gedit 2.26 plugin :) The fun fact is I completely don't know Python at all(only basic ideas). Most of the code is either a rip-off from one of the previously mentioned plugins or my wild guesses 'how the hell does it work?!'. I hope your PC won't melt :D
What does it do? Well, it's a really simple script despite the time I put into writing it. It saves the current file you are working on and executes git add [file] && git commit [file] making your life a lot easier because you don't have to remember about those annoying commits in your local repo every time you change something. Useful!
Script is in it's early beta, I didn't give it any version number. There are lot of things to do so don't be suprised that it's not perfect. I must also warn you it's not exactly idiot-friendly and even if I tried to make it as safe as I could, you still can make your local repository unusable. Use at your own risk!
And yes, I know that the code is not a state of art. It was written during my NADD (Nerd Attention Deficiency Disorder) period, not during the NAND (Nerdy Attraction to Naughty Development - code have to be sexy!) one. Sorry :D
You can download the plugin from my server (4 KB)
I welcome any feedback and bug reports, but please, don't be too hard on me, I'm just learning.
Also if possible don't be too harsh on my english - still studying ;)
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 ;)
Reklamy: sklep komputerowy ,
19-letni geek-webdesigner uczęszczający do ZSE w Bydgoszczy. więcej...