Select Page

sudo bez hasła dla wybranych aplikacji

Dzisiaj uruchamiając ponownie serwer apache na swoim komputerze, musiałem po raz n-ty podać hasło użytkownika. Z racji, że robię to dość często, chciałem, aby ten proces odbywał się bez mojej dodatkowej autoryzacji. Dobrałem się więc do konfiguracji polecenia sudo.
Możemy ją znaleźć pod tą ścieżką:

/etc/sudoers

Zalecam edytowanie tego pliku za pomocą polecenia:

sudo visudo

Dodałem tam poniższy wpis:

wujku  ALL=NOPASSWD: /usr/sbin/apachectl

Od tego momentu, mogę korzystać z polecenia:

sudo apachectl

Bez podawania za każdym razem mojego hasła.

Tworzenie tablicy z ciągu znaków – AppleScript

AppleScript pozwala na ustawienie separatora, po którym będzie dzielił tekst. Umożliwia także łączenie elementów tablicy w ciąg znaków. Domyślne separator jest ustawiony na {“”}, dzieląc tekst po każdym znaku.

W prosty sposób możesz go zmienić, przykładowo na spacje:

set AppleScript's text item delimiters to space

lub w innej formie:

set AppleScript's text item delimiters to {" "}

Wykonując teraz polecenie:

set exampleText to "AppleScript jest niesamowity!"
set array to exampleText's text items
array
-- {"AppleScript", "jest", "niesamowity!"}

Aby odwołać się do 2 elementu tablicy:

item 2 of array
-- "jest"

A co w przypadku, gdy chcesz złączyć elementy tablicy w pojedynczy ciąg znaków oddzielony przecinkami? Nic prostszego, definiujesz separator:

set AppleScript's text item delimiters to {", "}

Po czym wykonujesz prosty kod:

set exampleArray to {"ls", "cd", "cat", "cp", "mv", "ln"}
set shellCommands to exampleArray as string
shellCommands
-- "ls, cd, cat, cp, mv, ln"

Poniżej przedstawiam gotową funkcję split oraz jej wykorzystanie

on split(value, delimiter)
    set delimiterBackup to AppleScript's text item delimiters
    set AppleScript's text item delimiters to delimiter
    set value to value's text items
    set AppleScript's text item delimiters to delimiterBackup
    return value
end split

set shellCommands to split("ls, cd, cat, cp, mv, ln", {", "})

shellCommands
-- {"ls", "cd", "cat", "cp", "mv", "ln"}

item 4 of shellCommands
-- "cp"

Jak w szybki sposób zmusić twojego Maca do gadania?

Przy pomocy prostego kodu AppleScript, możesz wywołać okno dialogowe, w którym zostaniesz poproszony o wprowadzenie tekstu. Tekst zostanie “przeczytany” przez wbudowany w system syntezator mowy.

set message to ""
repeat while (message = "")
    set result to display dialog "Say text" default answer ""
    set message to (text returned of result)
end repeat
say message

Po zainstalowaniu w systemie polskiego głosu “Agata”, możesz go wykorzystać w skrypcie. Wystarczy zmodyfikować ostatni wiersz:

say message using "Agata"

Zmienna PATH – dodawanie własnego katalogu

Chcąc uruchomić skrypt lub program, musisz przejść do katalogu w którym się znajduje:

cd ~/Documents/Skrypty

a później go uruchomić:

./clearTmp

Lepszym rozwiązaniem jest przeniesienie wszystkich często używanych przez ciebie skryptów do jednego katalogu, który dodasz do zmiennej środowiskowej PATH, przez co będziesz miał dostęp do swoich narzędzi w każdym miejscu.

Pierwsze stwórz katalog bin w głównym katalogu twojego użytkownika:

mkdir ~/bin

Będziesz tam przechowywał wszystkie swoje skrypty lub dowiązania do programów, w celu szybkiego dostępu do nich.
Jeżeli jeszcze nie posiadasz pliku ~/.bash_profile, utwórz go:

touch ~/.bash_profile

Plik ten jest wczytywany podczas każdego uruchomienia terminala. Zachowasz w nim instrukcję przypisana twojego katalogu ~/bin do zmiennej środowiskowej PATH. Skorzystaj z poniższego polecenia:

echo "PATH=$PATH:~/bin" >> ~/.bash_profile

Teraz uruchom ponownie terminal. Przenieś do ~/bin najczęściej wykorzystywane przez siebie skrypty, dla przykładu utworzę dowiązanie symboliczne do skryptu czyszczącego zawartość /tmp:

cd ~/bin
ln -s ~/Documents/Skrypty/clearTmp ./clearTmp

Wynik polecenia ls -l dla mojego katalogu ~/bin:

...
lrwxr-xr-x  1 wujku  staff       39 16 sie 14:49 clearTmp -> /Users/wujku/Documents/Skrypty/clearTmp
...

Po wykonaniu polecenia:

clearTmp

Zostanie uruchomiony skrypt ~/Documents/Skrypty/clearTmp.

Bootowalny pendrive pod OS X

Nie raz spotykamy się z problemem utworzenia na naszej małej przenośnej pamięci, bootowalnego instalatora, przykładowo z systemem operacyjnym z rodziny Linuxa.

Pierwszym działaniem będzie konwersja pobranego obrazu systemu z .iso na .img posługując się wbudowanym w system narzędziem (po konwersji należy zmienić rozszerzenie pliku z .img.dmg na .img drugim poleceniem):

hdiutil convert obraz.iso -format UDRW -o obraz.img
mv obraz.img.dmg obraz.img

Po wykonaniu powyższych dwóch komend, możemy podłączyć pendrive do Mac`a (pamiętając, że zawartość przenośnej pamięci zostanie zastąpiona obrazem po wykonaniu wszystkich czynności).
Posługując się poleceniem:

diskutil list

Lokalizujemy nasz pendrive na liście i zapamiętujemy jego nazwę, pod którą widziany jest w systemie operacyjnym (np. /dev/diskX, gdzie X to numer).
Przed kopiowaniem obrazu, musimy odmontować naszą pamięć przenośną poleceniem (zamień X własnym numerem):

diskutil unmountDisk /dev/diskX

Wykonując poniższe polecenie, obraz.img zostanie skopiowany do Waszej pamięci przenośnej (zamień X własnym numerem):

sudo dd if=obraz.img of=/dev/rdiskX bs=1m

Kopiowanie może zająć kilka minut w zależności od prędkości pendrive`a.
Po zakończeniu, możemy odmontować naszą pamięć przenośną.

Nie odpowiadam za nieumiejętne korzystanie z konsoli oraz za utracone w ten sposób dane. W razie pytań, zostaw komentarz.

Klucze SSH

Generowanie klucza SSH:

ssh-keygen -t rsa -C "your@address.com"

Po wprowadzeniu komendy zostaniemy zapytani o nazwę pliku w którym będzie przechowywany nasz klucz, a krok dalej o hasło.

Klucz bez hasła przydatny przy synchronizacji danych poprzez rsync:

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P ""

Kopiowanie klucza publicznego do schowka:

pbcopy < ~/.ssh/id_rsa.pub

Dodawanie klucza SSH do autoryzowanych kluczy na serwerze zdalnym.
W przypadku gdy plik nie istnieje:

touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

Przerzucanie klucza ze schowka do utworzonego pliku:

pbpaste > ~/.ssh/authorized_keys