[BASH] 'sudo su -' w skrypcie.

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
mihau
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 09 lut 2009, 14:55
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[BASH] 'sudo su -' w skrypcie.

Post autor: mihau »

Hej.

Chce napisać mały skrypt który będzie instalował aplikacje uruchamianą pod wine, konfigurował ją itp.

Aczkolwiek jest mały zgrzyt, w firmie wszystkie laptopy mają Ubuntu 9.04 a oficjalne repo z wine dla 9.04 wygasły, znalazłem inne z którego się instaluje, lecz wymaga to wrzucenia do /etc/apt/source.list tego repo, więc wiadomo, tylko z roota można zapisać coś w source.list...
Jak to teraz ładnie ująć, żeby wrzucało np. przez sed -i, link repo do source.list'a.
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: azhag »

Prościej będzie utworzyć plik w katalogu /etc/apt/sources.list.d/.

Wystarczy

Kod: Zaznacz cały

sudo echo wpis >/etc/apt/sources.list.d/plik
Polski portal Debiana: http://dug.net.pl/
Awatar użytkownika
empitt
Przyjaciel
Przyjaciel
Posty: 465
Rejestracja: 16 lis 2007, 13:35
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: empitt »

Lub:

Kod: Zaznacz cały

sudo bash -c "echo 'deb repo...' >> /etc/apt/sources.list"
lub:

Kod: Zaznacz cały

echo 'deb repo...' | sudo tee -a /etc/apt/sources.list
LukAs
Wytworny Kaczor
Wytworny Kaczor
Posty: 284
Rejestracja: 30 paź 2005, 21:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: LukAs »

A jeśli z jakiegoś powodu lista Ci się rozrośnie, to możesz zastosować mechanizm osadzania dokumentu lub wczytać repozytoria z pliku. Przy dużej liście adresów, użycie echo robi się niewygodne i trzeba łamać wiersze. No i kod skrypt robi się nieładny/nieczytelny.

Kod: Zaznacz cały

#!/bin/bash

sudo tee -a /etc/apt/sources.list <<EOF
# Wine Ubuntu 10.04
deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu lucid main
# Wine Debian
deb http://wine.budgetdedicated.com/apt
EOF
Jeśli nie chcesz widzieć adresów na ekranie, to można przekierować wyjście do kosza

Kod: Zaznacz cały

sudo tee -a /etc/apt/sources.list 1> /dev/null
Zrób też kopię pliku ;)
Więcej o mnie znajdziesz na: http://ospulse.pl
Awatar użytkownika
empitt
Przyjaciel
Przyjaciel
Posty: 465
Rejestracja: 16 lis 2007, 13:35
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: empitt »

Przy dużej liście adresów, użycie echo robi się niewygodne i trzeba łamać wiersze.
Przesada...

Kod: Zaznacz cały

#!/bin/bash

sudo bash -c "echo 'deb repo...
deb repo1...
deb repo2...
deb repo3...' >> /etc/apt/sources.list"
No i kod skrypt robi się nieładny/nieczytelny.
Nie zauważyłem tego, aby powyższy kod był nieczytelny i nieładny. Faktycznie Twoja wersja jest o ciut milsza, ale na moje oko echo wcale gorzej nie wypada. Raczej nazwałbym to kwestią gustu i przyzwyczajenia.
Awatar użytkownika
mihau
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 09 lut 2009, 14:55
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: mihau »

Potestuję sobie dzisiaj i zobaczymy co z tego wyjdzie;) dzięki wielkie
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: azhag »

empitt pisze:Przesada...

Kod: Zaznacz cały

#!/bin/bash

sudo bash -c "echo 'deb repo...
deb repo1...
deb repo2...
deb repo3...' >> /etc/apt/sources.list"

Nie zauważyłem tego, aby powyższy kod był nieczytelny i nieładny. Faktycznie Twoja wersja jest o ciut milsza, ale na moje oko echo wcale gorzej nie wypada. Raczej nazwałbym to kwestią gustu i przyzwyczajenia.
Można też:

Kod: Zaznacz cały

cat >plik <<EOF
jeden
dwa
trzy
cztery
EOF
Polski portal Debiana: http://dug.net.pl/
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: borzole »

można tak:

Kod: Zaznacz cały

main(){
	echo Hello $(whoami)
}
# run_as_root
if [ `id -u` != 0 ] ; then
	abs_path="$(readlink -f `dirname $0`)/$(basename $0)"
	echo "[su -] uruchaminie jako root"
	su -c"/bin/bash $abs_path $*"
else
	main $*
fi
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: azhag »

borzole pisze:można tak:

Kod: Zaznacz cały

main(){
	echo Hello $(whoami)
}
# run_as_root
if [ `id -u` != 0 ] ; then
	abs_path="$(readlink -f `dirname $0`)/$(basename $0)"
	echo "[su -] uruchaminie jako root"
	su -c"/bin/bash $abs_path $*"
else
	main $*
fi
Drobna poprawka:

Kod: Zaznacz cały

[ `id -u` -ne 0 ]
Polski portal Debiana: http://dug.net.pl/
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: borzole »

to już chyba jeden pies != czy -ne, czy może jest coś o czym nie wiem?
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: azhag »

-ne, -eq, -lt i spółka służą do porównywania liczb
Polski portal Debiana: http://dug.net.pl/
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] 'sudo su -' w skrypcie.

Post autor: borzole »

Tyle to ja wiem, pytam czy jest jakaś różnica w działaniu
[ `id -u` -ne 0 ]
i
[ `id -u` != 0 ]
dla mnie jest bardziej czytelny zapis z C, jest stosowany też w innych językach.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości