Strona 2 z 2

: 02 maja 2011, 23:13
autor: DaVidoSS
fuj!
Miałem nadzieję, że Waść tu nie zajrzysz, ale stało się. :p

Co mam na myśli?

Kod: Zaznacz cały

#!/bin/bash
starehaslo=`grep Haslo plik.conf | cut -c 7-`
echo 'wpisz hasło do podmiany:'
read nowehaslo
sed -i "s/Haslo=$starehaslo/Haslo=$nowehaslo/" plik.conf


albo:

Kod: Zaznacz cały

#!/bin/bash
starehaslo=`grep Haslo $1 | cut -c 7-`
echo 'wpisz hasło do podmiany:'
read nowehaslo
sed -i "s/Haslo=$starehaslo/Haslo=$nowehaslo/" $1
echo "Zmieniono linię Haslo=$starehaslo na Haslo=$nowehaslo w pliku $PWD/$1"
Nazwij skrypt podmieniacz.sh.

Uruchom skrypt:
sh podmieniacz.sh plik.conf

: 03 maja 2011, 00:15
autor: Monter08
Myślę, że jest to zbędne, ponieważ piszę panel do obsługi serwerów gier, a każdy serwer ma swój katalog, wiec raczej nie opłaca mi się przy każdej instalacji tworzyć jeszcze jeden plik, to co zaproponowałeś, napisałem już w php ;)

: 03 maja 2011, 10:02
autor: Bastian
Monter08, zainteresuj się awk. Wszystko o co prosiłeś, można uzyskać za pomocą awk. W nauce jest prosty, i wielce pomocny. (chociaż w sumie w php też się wszystko da zrobić).

: 05 maja 2011, 17:40
autor: Monter08
Dziękuję Bastian, lecz jak na razie próbuje w php. Mógłby mi ktoś powiedzieć gdzie zrobiłem błąd? Ponieważ, sed nie zamienia mi danych, a powinien.

Kod: Zaznacz cały

$stream[0] = ssh2_exec($connection, "cd $ssh_dir/$user_name/ && cat ventrilo_srv.ini | grep Name");
stream_set_blocking($stream[0], true);
$output = stream_get_contents($stream[0]);
fclose($stream[0]);
$stream[2] = ssh2_exec($connection, "cd serv/test/ && sed -i 's/$output/Name=$_POST[nazwa]/' ventrilo_srv.ini");
stream_set_blocking($stream[2], true);
Sprawa wygląda tak, poprzez $stream[0] pobieram sobie jaką aktualnie ma wartość Name, nastepnie poprzez posta wstawiam nową. Wszystko wygląda na dobrze, ale wartość nadal się nie zmienia.

Dodane:
Problem rozwiązany, lecz mam inne pytanie, mianowicie sed przeszukuje cały plik i zamienia wszystko co w ciągu ma dany tekst, i właśnie z tym mam problem. Ponieważ, mój plik cfg ma AdminPassword i Password, a gdy chcę zmienić Password to zmienia mi się AdminPassword i Password. Istnieje możliwość aby zamieniało tylko samo Pasword?

: 05 maja 2011, 17:56
autor: DaVidoSS
Fraza "AdminPassword" nie jest równa frazie "Password".

: 05 maja 2011, 18:53
autor: lessmian2

Kod: Zaznacz cały

sed -i 's/^Password=terefere/Password=tytezterefere/' plik.conf
Spróbuj tak (o ile tekst nie zaczyna się spacja czy tabulacją).

: 05 maja 2011, 22:02
autor: Monter08
Dziękuję lessmian2, pomogło.
DaVidoSS, owszem, fraza "AdminPassword" nie jest równa frazie "Password", lecz jak widzisz we frazie AdminPassword znajduje się Password, a sed przeszukuje cały tekst i nie patrzy czy jest to sama fraza, czy oddzielona spacją. Przynajmniej ja tak to rozumiem, jeżeli źle myślę to proszę mnie poprawić.