środa, 11 września 2013

Przywracanie hasła root dla MySQL/MariaDB

Dzisiaj bardzo szybka porada jak przywrócić hasło administratora dla serwera MySQL i pochodnych:
Uruchamiamy usługę w trybie ratunkowym: service mysqld stop
mysqld_safe --skip-grant-tables&

Logujemy się do wiersza poleceń: mysql

Ustawiamy nowe hasło: mysql> UPDATE mysql.user SET password=PASSWORD('nowe-haslo') WHERE user='root';
mysql> FLUSH PRIVILEGES;

Po wykonaniu poleceń uruchamiamy serwer: service mysql restart
Jeśli wszystko wykonaliśmy prawidłowo, to możemy dalej uruchamiać nasze ulubione kwerendy SQL ;).

piątek, 8 lutego 2013

Drukowanie broszurek pod Linuksem

Zdarza się, że potrzeba wydrukować z internetu spory plik papieru w formacie A5 (lub jak kto woli A4 2 strony na 1). Dodatkowo gdy zachodzi potrzeba częstego korzystania z wydruku, warto zrobić sobie z tego książeczkę (broszurkę) zszywaną wzdłuż środka strony (grzbietu złożonej strony A4). Żadne, znane mi, darmowe oprogramowanie nie oferowało takiej funkcjonalności. W efekcie, po krótkim googlowaniu, trafiłem na stronę Evince - printing a booklet. Tam znajduje się "fajny wzór", bez którego nijak sobie z tym problemem (w tym programie) nie można poradzić. Wszystko ok w przypadku niewielkiej objętości wolumenu, ale w przypadku 30+ stron szybciej byłoby napisać automat, który zrobi to za nas.

Ja potrzebowałem przygotować 92 strony do druku. Czy wyszło szybciej? W przypadku jednorazowego wydruku może nie, ale za to przypomniałem sobie o pętlach, instrukcjach warunkowych, logicznych oraz algebraicznych w bashu, a to wszystko w jednym miejscu :).

Oto "broszurkowa formuła" w bashu. Wystarczy ją wkleić do pliku i wykonać.#!/bin/bash # n - liczba stron do wydruku### zmień 0 na liczbę stron w pliku
n=0

# podnieś liczbę n do najbliższej podzielnej przez 4
while [ $[ $n%4 ] -gt 0 ]
  do n=$[ n+1 ]
done

# wygeneruj ciąg, który należy wprowadzić do pola "Strony:"
echo -ne $n
echo -ne ", "
for i in `seq 1 $[ $n/4 ]`
do
  echo -ne $[ $i*2 - 1 ]
  echo -ne ", "
  echo -ne $[ $i*2 ]
  echo -ne ", "
  echo -ne $[ $n - 2*$i + 1 ]
  if [ $i -ne $[ $n/4 ] ]
  then
    echo -ne ", "
    echo -ne $[ $n - 2*$i ]
    echo -ne ", "
  else
    echo ""
  fi
done

niedziela, 30 grudnia 2012

Kopiowanie plików pod Linuksem

Dzisiaj krótko, ale treściwie: użyj rsync!

Zalety:

  • możliwość wznowienia
  • możliwość prostej kompresji strumienia
  • możliwość wykorzystania dowolnego protokołu
  • powszechna dostępność pod Linuksem
  • brak wad
A oto działający przykład, którego zadaniem jest skopiować pliki przez ssh ze zdalnego serwera: rsync -arvz -e ssh user@some-host:~/remote-direcotory ~/local-directory

sobota, 29 grudnia 2012

Backup i przywracanie systemu Linux

Czasem (zawsze, ale często dowiadujemy się o tym za późno ;) ) zdarza się, że potrzebujemy wykonać backup systemu. W Linuksach sprawa wygląda bardzo prosto - wszystko dzięki otwartości systemu. Dzięki takiemu backupowi możemy przywrócić bądź przenieść działający system wraz z konfiguracją zawsze gdy wystąpi taka potrzeba, a plik z archiwum będzie zajmował niewiele miejsca na dysku. Ale do rzeczy.

Chcąc zarchiwizować system (bez katalogów użytkownika), z roota wykonujemy następujące polecenie: tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/home / Utworzony zostanie plik backup.tar.bz2, z którego możemy w każdej chwili przywrócić działający system z (np. dystrybucji live bądź płyty ratunkowej) poleceniem: tar xvpfj backup.tar.bz2 -C /
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
mkdir home
W przypadku gdy przenosimy system na inny dysk, należy ustawić:
  • flagę bootującą na partycji boot
  • zaktualizować plik /etc/fstab
  • zaktualizować plik /etc/sysconfig/network
  • przywrócić program rozruchowy (grub)
  • oraz przekopiować katalogi użytkownika przez sieć
To ostatnie wykonałem to przy pomocy płyty instalacyjnej z opcją "Aktualizacja istniejącej instalacji". Program wykryje, że pakiety są w nowszej wersji i przetworzy jedynie dane znajdujące się w systemie w celu aktualizacji gruba.

czwartek, 29 listopada 2012

Wyłączenie sprawdzania aktualizacji w Fedora

Zdarza się, że mamy limitowany dostęp do internetu i nie koniecznie występuje potrzeba regularnego sprawdzania dostępności aktualizacji. Jako, że pliki z informacjami o podstawowych repozytoriach ważą w sumie 15MB, a domyślnie aktualizacje sprawdzane są co 2 - 3 dni, to walczymy o miesięczny transfer rzędu 200MB.
Aby wyłączyć sprawdzanie aktualizacji należy wyedytować plik: /etc/yum/pluginconf.d/refresh-packagekit.conf zmieniając: enalbled=1 na enabled=0

Uruchamiamy program: pkg-prefs i wprowadzamy stosowne poprawki.

UPDATE:
W Fedora 18 narzędzie pkg-prefs nie jest już dostępne. Skuteczną metodą rozwiązania problemu automatycznego odświeżania bazy pakietów będzie usunięcie paczki, będącej źródłem całego kłopotu:
yum remove PackageKit-yum-plugin

poniedziałek, 12 listopada 2012

ClockworkMod Tether (no root) dla Linuksa - Fedora way

Zdarza się, że zainstalujemy eksperymentalną wersję ROMu, bez działającego tetheringu, lub wersja branodwana Androida nie dostarcza takiej funkcjonalności, a nie bardzo chcemy się z nią rozstać. Cóż wówczas zrobić aby móc skorzystać z dobrodziejstwa zakupionego z telefonem pakietu internetowego?
Z pomocą przychodzi ClockworkMod Tether (no root), na który składa się część kliencka na komputer oraz aplikacja instalowana na telefonie.

Wszystko pięknie tylko na Linksa nie otrzymujemy gotowej apki, ale paczkę z kodem źródłowym. Ciśnie się wówczas na myśl znane wszystkim hasło: "Linuks - u mnie działa". No i faktycznie działa, tyle, że z małymi przeszkodami.

Kompilujemy standartowo: ./configure
make
ale w trkacie kompilacji wychodzi, że brakuje nam pliku stropts.h. Krótkie poszukiwania: yum whatprovides */stropts.h i już wiemy, że gdzieś coś takiego jest i dalej zmierzamy już prosto do działającego programu: yum install gcc-c++ arm-gp2x-linux-glibc
ln -s /usr/arm-gp2x-linux/include/stropts.h /usr/include/bits/
ln -s /usr/arm-gp2x-linux/include/stropts.h /usr/include/
ln -s /usr/arm-gp2x-linux/include/bits/xtitypes.h /usr/include/bits/


Póki co aplikacja sprawdza się znakomicie i uratuje mi studia ;).

sobota, 10 listopada 2012

Katalog tymczasowy dla Vim'a

Zdarza się, że nie chcemy przechowywać plików tymczasowych w katalogu roboczym projektu. Niewiele edytorów po za Vimem pozostawia nam inny wybór niż zupełnie z nich zrezygnować i robić kopie ręcznie... wyłączyć pliki wymiany (.swp) w Vim można poleceniem: :set noswapfile jednak po co tak robić, jeśli dopisując kilka wierszy w vimrc jesteśmy w stanie zachować "czystość" katalogu roboczego i kopie tymczasowe edytowanych plików:
"ustaw katalog swap dla plików tymczasowych
if has("win32") || has("win64")
   set directory=$TMP
else
   set directory=/tmp
end
Oczywiście katalog /tmp można wymienić na dowolny katalog, np. $HOME/.vim_tmp, itp.

czwartek, 8 listopada 2012

Tryb wsadowy MySQL

Często trzeba odpalić skrypt i czekać dłuuugie minuty, aż prompt się "namyśli" - gorzej zapuszczać co chwilę wiele interaktywnych procesów ładowania danych do bazy. Można by w ten czas spożytkować lepiej... herbata, blog, albo poczytać literaturę fachową ;). Niezmiernie przydatny w tym celu okazuje się tryb wsadowy, który umożliwia podanie danych logowania w wierszu poleceń: mysql "bazaDanych" --user="login" --password="hasło" < plik.sql

poniedziałek, 5 listopada 2012

Usuwanie wszystkich tabel w bazie MySQL

Usuwanie tabel w bazie bez jej drop'owania, może być kłopotliwe, ze względu na więzy integralności pomiędzy rekordami w tabelach.

Na szczęście usuwanie można wykonać szybko i bezboleśnie. Jedyne co trzeba zrobić to włączyć na chwilę ignorowanie sprawdzania więzów integralności pomiędzy kluczami obcymi. Robimy to następującym poleceniem:


SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS tabela1, tabela2, ..., tabelaN;


Easy peasy :).

sobota, 3 listopada 2012

Przywracanie ustawień fabrycznych w OpenWrt

Oto kolejny wpis z cyklu OpenWrt i moje zabawki :)

A więc namieszaliśmy w ustawieniach albo zapełniliśmy już pamięć routera do granic możliwości i nie bardzo wiemy co dalej zrobić... a może mały reset?
Z resetem bywa różnie... czasem się uda, a potem nie wiadomo co dalej... bo co zrobić gdy router nie chce się uruchomić? Flashować ponownie? A może da się jakoś łatwiej?
A no da się :).

Co będzie potrzebne?
  1. Komputer z:
    • kartą sieciową ethernet
    • zainstalowanym klientem telnet oraz ssh
    • nasz ulubiony kabelek RJ45
  2. Router z oprogramowaniem OpenWrt
Opis metody:
  1. Logujemy przez ssh do routera
  2. Wpisujemy polecenia:
    firstboot
    reboot
  3. Podłączamy kabel ehernet w komputerze oraz portu LAN 1 na routerze
  4. Ustawiamy adres karty ethernet, używanej do łączenia się z routerem na statyczny adres 192.168.1.11 z maską podsieci 255.255.255.0
  5. Po uruchomieniu logujemy się do routera poleceniem:
    telnet 192.168.1.1login: root
    hasło: (puste)
  6. Od tej pory możemy dalej mieszać :)