[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?

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

Post autor: DK »

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: 2862
Rejestracja: 2004-06-29, 22:23
Lokalizacja: eth0
Kontakt:

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

Post autor: Outlaw »

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 »

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 »

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 »

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: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

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

Post autor: mina86 »

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 code name ‘mina86’ in response to the previous one.
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 »

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: 2629
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 »

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 »

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 »

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: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

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

Post autor: mina86 »

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 code name ‘mina86’ in response to the previous one.
ODPOWIEDZ