[+] Polecemie zmieniaj

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post 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
Monter08
Posty: 12
Rejestracja: 29 kwietnia 2011, 23:30

Post 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 ;)
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post 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ć).
Monter08
Posty: 12
Rejestracja: 29 kwietnia 2011, 23:30

Post 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?
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Fraza "AdminPassword" nie jest równa frazie "Password".
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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ą).
Monter08
Posty: 12
Rejestracja: 29 kwietnia 2011, 23:30

Post 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ć.
ODPOWIEDZ