Strona 1 z 1

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

: 2008-03-27, 22:46
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?

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

: 2008-03-27, 22:48
autor: Outlaw
Zainteresuj się pakietem sudo dzięki którego uruchamia się skrypty/programy z prawami roota ;)

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

: 2008-03-27, 22:52
autor: chimi
Ewentualnie

Kod: Zaznacz cały

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

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

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

Kod: Zaznacz cały

yes hasło | su

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

: 2008-03-28, 21:59
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.

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

: 2008-03-28, 22:10
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ć).

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

: 2008-03-28, 22:45
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

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

: 2008-03-28, 23:01
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.

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

: 2008-04-04, 02:43
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

To jest to czego od dawna szukałem!

: 2008-07-22, 21:34
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

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

: 2008-07-22, 22:10
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...