[BASH] Jak w podac haslo roota w pliku skryptu powloki?

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
DK
Użytkownik
Posty: 3
Rejestracja: 2007-09-01, 11:27
Lokalizacja: sie znamy?
Kontakt:

[BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: DK » 2008-03-27, 22:46

Czesc :)
Mam siec radiowa, ladnie wszystko skonfigurowalem. Konfiguracja mam zapisana w pliku net.sh ( skrypt powloki, czyli wykonywalna pod konsola ). Na koncie roota nie bylo problemow, bo mialem pelne prawa, natomiast na koncie usera przeciwnie:)
Skrypt wyglada tak:

Kod: Zaznacz cały

#!/bin/sh 
 su
 tu podaje haslo# tylko ze to nie dziala, dlatego pytam sie, za pomoca jakego #kodu mozna podac tu haslo, jakas zmienna zawiera haslo itp.
ifconfig ath0 down;
macchanger --m=00000000 ath0;
ifconfig ath0 up;

 ifconfig ath0 10.100.x.x netmask 255.255.255.0;
 route add default gw 10.100.x.x;

 iwconfig ath0 essid siecwlan;
 
Ale zeby korzystac na koncie usera z tego skrytpu, trzeba dodac polecenie "su" i podac haslo. I tu jest problem, jak wpisac haslo? Jakim poleceniem je podac?
[img]httP://gem089.yoyo.pl/logo.png[/img]

Awatar użytkownika
Outlaw
Administrator
Posty: 2861
Rejestracja: 2004-06-29, 22:23
Lokalizacja: eth0
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: Outlaw » 2008-03-27, 22:48

Zainteresuj się pakietem sudo dzięki którego uruchamia się skrypty/programy z prawami roota ;)

chimi
Użytkownik
Posty: 117
Rejestracja: 2005-05-01, 15:49

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: chimi » 2008-03-27, 22:52

Ewentualnie

Kod: Zaznacz cały

su -c "./skrypt"
i wtedy już bez su w skrypcie.

Awatar użytkownika
wik5
Użytkownik
Posty: 158
Rejestracja: 2005-01-01, 20:15
Lokalizacja: Leszno
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: wik5 » 2008-03-28, 21:42

Kod: Zaznacz cały

yes hasło | su

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: Zielony » 2008-03-28, 21:59

Kod: Zaznacz cały

#!/bin/bash

if [ ! `whoami` == "root" ]; then
    exec sudo $0 # możesz zastąpić "sudo" na "su -c"
fi

# Twój skrypt (bez tego su oczywiście)
A podawanie hasła w skrypcie jest beznadziejnym pomysłem, bo można użyć sudo i takie rozwiązanie Ci polecam.
Ostatnio zmieniony 2008-03-28, 22:07 przez Zielony, łącznie zmieniany 3 razy.
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: mina86 » 2008-03-28, 22:10

wik5:

Kod: Zaznacz cały

$ echo haslo |su -c 'echo a'
su: must be run from a terminal
Zielony, osobiście używam [ `uid -u` -ne 0 ] (choć z tym mogą być kłopoty na Solarisie). Ponadto jeśli już to exec sudo "$0" i wcale tak łatwo tego na su -c zamienić nei można (unikanie znaków!). Tak czy owak, to i tak nie robi chyba tego co DK chciał, a mianowicie nie odpala polecenia bez konieczności wpisywania ręcznie hasła (bo zrozumiałem, że tak to ma działać).
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

Awatar użytkownika
Zielony
Użytkownik
Posty: 535
Rejestracja: 2005-03-17, 18:22
Lokalizacja: Poznań
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: Zielony » 2008-03-28, 22:45

mina86 pisze:Ponadto jeśli już to exec sudo "$0"
Haha, a niby czemu? :D
mina86 pisze:wcale tak łatwo tego na su -c zamienić nei można (unikanie znaków!)
Nie wiem, o czym mówisz. U mnie działa.

Jeszcze raz polecam dopisanie polecenia do sudoers, ale jeśli się upierasz, to można tak:

Kod: Zaznacz cały

#!/bin/bash

if [ ! `whoami` == "root" ]; then
    exec sudo -S $0 << HASLO
# hasło użytkownika
HASLO
fi

# Twój skrypt
Ostatnio zmieniony 2008-03-28, 23:15 przez Zielony, łącznie zmieniany 2 razy.
Żyję - nie każdemu się zdarza - a we krwi mam chlorofil.
[url=http://scxd.info/][img]http://scxd.info/pub/scxdbar/scxd-bar.png[/img][/url]
[b]Registered User #448882[/b]
[img]http://scxd.info/say/img.php[/img]

Awatar użytkownika
Lizard
Moderator
Posty: 2583
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: Lizard » 2008-03-28, 23:01

Zielony pisze:
mina86 pisze:Ponadto jeśli już to exec sudo "$0"
Haha, a niby czemu? :D
Spróbuj bez cudzysłowów wykonać skrypt o takiej nazwie:

Kod: Zaznacz cały

moj\ skrypt.sh
Zielony pisze:Jeszcze raz polecam dopisanie polecenia do sudoers, ale jeśli się upierasz, to można tak:

Kod: Zaznacz cały

#!/bin/bash

if [ ! `whoami` == "root" ]; then
    exec sudo -S $0 << HASLO
# hasło roota
HASLO
fi

# Twój skrypt
To jest jakieś masło maślane. I tak kończy się na wykonaniu sudo, więc wygodniej zastosować się do tego co napisał Outlow. Artykuł nt sudo znajduje się w FAQ.
Error 404 - footer not found

Awatar użytkownika
Mad_Dud
Użytkownik
Posty: 86
Rejestracja: 2006-01-28, 13:25
Lokalizacja: 61 / 71
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: Mad_Dud » 2008-04-04, 02:43

Kod: Zaznacz cały

#!/usr/bin/expect --

spawn su LOGIN -c KOMENDA
expect "Password: "
send "HASLO\r"
interact
ha! :-D

expect Tutorial: http://users.csc.calpoly.edu/~dbutler/t ... orial.html

man expect
Ostatnio zmieniony 2008-04-04, 03:22 przez Mad_Dud, łącznie zmieniany 3 razy.
Greetings

MiSHu
Użytkownik
Posty: 1
Rejestracja: 2008-07-22, 21:27
Lokalizacja: Człuchów
Kontakt:

To jest to czego od dawna szukałem!

Post autor: MiSHu » 2008-07-22, 21:34

Od dłuższego czasu szukam czegoś takiego i co prawda sam skorzystam z rozwiązania jakie podał Mad_Dud, jednak jest ono trochę niedoskonałe ze względu chociażby tego, że w przypadku gdy system nie wywali nam 'Password: ' tylko coś innego (w moim przypadku jest to komunikat 'Hasło: ') to skrypt już nie zadziała.

Na pewno można to jeszcze poprawić, jednak ja osobiście dziękuję za to co zostało tu umieszczone i w związku z tym, że i tak używać będę tego tylko na jednej maszynie, ewentualnie mogę sobie ręcznie zmienić skrypt, więc nie chce mi się nawet tego ulepszać.

Pozdrawiam, Michał Jastrzębowski

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: [BASH] Jak w podac haslo roota w pliku skryptu powloki?

Post autor: mina86 » 2008-07-22, 22:10

MiSHu pisze:w moim przypadku jest to komunikat 'Hasło: '
Dodaj export LANG=C LC_ALL=C LC_MESSAGES=C na początek skryptu.

Zielony, to, że Tobie działa na skończonej liczbie przypadków nie oznacza, że działa w ogólności... Naprawdę, aż mi się nie chce tłumaczyć, dlaczego nie będzie działać, no ale, niech będzie moja strata:

Kod: Zaznacz cały

script="echo foo.sh"
sudo "$script" # works!
sudo $script  # fails miserably...
su -c $script # fails miserably...
su -c "$script" # fails miserably...
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

ODPOWIEDZ