« Posts tagged programowanie

Mały trick rzadko wykorzystywany, ale przydatny

Jakiś czas temu „zajszła” potrzeba zmiany loginu jednego użytkownika systemu. Jednym z rozwiązań jest założenie nowego konta, przekopiowanie plików ze starego $HOME do nowego i chown -R. Ale pozostaje jeszcze kwestia pozostałych plików w systemie (a to jakaś sesja w /tmp, a to jakieś „śmieci” utworzone poza katalogiem domowy). Ogólnie lipa. Dodajemy nowego usera to z automatu na nowe UID (GIG może, aczkolwiek nie musi, pozostać ten sam). W związku z tym pytanie – co zrobić z pozostałymi plikami? Jednym z rozwiązań jest łamaniec w stylu

find / -user UID_STAREGO_KONTA -exec chown nowy_user:nowa_grupa '{}' \;

. Niby OK. Ale przeszukanie dysku 200GB trochę czasu zajmie, zamęczy dysk i w ogóle lipa.  Innym rozwiązaniem jest skorzystanie z systemowego usermod -l old_name new_name. Ale i to rozwiązanie ma jedną wadę – cytując manuala:

The name of the user will be changed from LOGIN to NEW_LOGIN. Nothing else is changed. In particular, the user’s home directory name should probably be changed manually to reflect the new login name.

Czyli dostajemy nowy login tak jak chcieliśmy ale katalog domowy użytkownika nadal ma starą nazwę. Takie troszkę nieestetyczne rozwiązanie.

Czy jest zatem narzędzie, które rozwiąże wszystkie problemy? Ja niestety nie doszukałem się takowego, dlatego postanowiłem stworzyć własne. Skrypt nosi wdzięczną nazwę „re-login” można go pobrać stąd. Działanie jest proste – modyfikacja plików /etc/group, /etc/passwd, /etc/shadow oraz zmiana nazwy katalogu domowego.

Skrypt został przetestowany w środowisku produkcyjnym i działa bez zarzutu. Gdyby ktoś miał jakieś zastrzeżenia, uwagi to piszcie. Postaramy się poprawić.

Współudział przy tworzeniu skryptu: Mateusz ‘thalcave’ Chynowski jako „debugger” :) oraz lis6502 – wskazówki dotyczące seda. Skrypt został opublikowany na licencji GNU GPL v2 (lub późniejszej). Autorzy nie ponoszą żadnej odpowiedzialności za działanie i wykorzystanie skryptu (ostrzeżenie proforma;))

WordPress Random Image

No stało się. Pierwszy post w „skryptach”. Co prawda nie moja działka bo tyczy się to PHP, no ale trudno. Moje galerie tworzone są przy pomocy pluginu NextGen Gallery. Teoretycznie oferuje on możliwość wstawienia losowego zdjęcia/losowych zdjęć z wybranych galerii jednak u mnie coś nie bardzo miał ochote działać. Spędziłem kilka dni na poszukiwaniu osobnego pluginu, który by to umożliwiał jednak albo nie potrafię korzystać z Google, albo takowego nie ma. Wszystkie działały albo w sidebarze, albo trzeba było modyfikować kod templatek co skutkowało wstawieniem losowego zdjęcia na każdej stronie/na każdym poście. Dopadłem w końcu plugin NGGImages. Prosty przyjemny wstawiający fotki z wybranej galerii na wybranej stronie/na wybranym poście. Miał tylko jedną wadę wstawiał wszystkie fotki i tylko z jednej galerii.

Postanowiłem przyjrzeć mu się bliżej. Kod stanowiło kilka linijek. Po kilku piwach i godzinach zaczynałem rozumieć o co w nim chodzi i jak działa (moja znajomość PHP jest baaaardzo ograniczona – nie moja działka ;)). Postanowiłem go trochę zmodyfikować tak aby wybierał 1 losowy obrazek. Udało się. Co prawda kod był tak napisany, że o pomstę do bogów wołał, ale dla mnie najważniejsze było, że coś już działa. Niestety nadal miał jedną wadę.

Jako iż ciężko mnie zadowolić pod pewnymi względami zacząłem go molestować dalej. Pełen sukces! Plugin wyświetla jedno losowe zdjęcie z zadanych galerii. Nieprzespana noc, codex w jedną rękę, wujek google w drugą, Yerba w trzecią i czwarta na klawiaturze i nawet kod udało się dość czytelnie napisać.

 Szanowne Pani, Szanowni Panowie oto przed Państwem „WordPress RandomImage” .
Kliknij tutaj aby pobrać

Jak zainstalować:

  • Pobierz plik rndimg.zip
  • Rozpakuj do katalogu wp-content/plugins
  • Zaloguj się do panelu admnistracyjnego WordPressa
  • Przejdź do zakładki „Plugins” i kliknij na „Activate”

Jak używać:

  • Wystarczy wpisać shortcode [rndimg ids="id1,id2,id3..."]. Więcej opcji w readme.txt