Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.


Moderator



Witam!
Pisze sobie universalny skrypcik w perlu do wysylania karteczek winpopup no i natknalem sie w perlu na to ze chce wynik polecenia systemowego wpisacw zmienna ale co mi nie wychodzi:
$komp = `nmblookup -A "$ip" |grep -v "<GROUP>" | awk '($2 == "<00>") {print $1}' | tr -d 'n'` ;
printf "$komp n" ;
zmienna ip jest zadeklarowana wczesniej, pod zmienna komp powinna byc nazwa kompa ktorego ip podalem w zmiennej ip.
Blad wykonania tego polecenia to:
awk: line 1: syntax error at or near ==
Co powinienem poprawic ?

Offline
pokaż więcej skryptu.
Deklaracje zmiennych
Offline


Moderator



O to cały skrypt:
#!/usr/bin/perl
if(@ARGV)
{
$ip = $ARGV[0] ;
if ($ip =~ /(d+.d+.d+.d+)/)
{
printf "$1 n";
$tresc_popup = $ARGV[1] ;
$komp = `nmblookup -A "$ip" |grep -v "<GROUP>" | awk '($2 == "<00>") {print $1}' | tr -d 'n'` ;
printf "$komp n" ;
system "echo "$tresc_popup" | smbclient -U "Maverick" -I "$ip" -M "$komp" " ;
}
}
else
{
printf "Uruchom podając jako parametry ip i treśc wiadomości. n";
}
Co tu poprawić powinienem ?

Offline


Użytkownik



sorry że nie na temat bo nie mam odp. niestety na twoje pytanie ale mam prośbe ze jak skonczysz skrypt i ci zadziała to mi go przeslij bo by sie takie cos przydalo : zygamen@interia.pl -> jesli oczywiscie to jest mozliwe
dzieki
Offline
Zamiast ($2 == "<00>")
wpisz
($2 -eq "<00>")
U mnie dziala ;))
Pozdrawiam
Offline


Użytkownik



mnie poprawieniu tego co napisałeś przy samym uruchamianiu (nawet bez parametrów)
pokazuje się błąd:
Scalar found where operator expected at ./popup line 14, near ""echo "$tresc_popup"
(Missing operator before $tresc_popup?)
String found where operator expected at ./popup line 14, near "$tresc_popup" | smbclient -U ""
(Missing operator before " | smbclient -U "?)
Bareword found where operator expected at ./popup line 14, near "" | smbclient -U "mzegan"
(Missing operator before mzegan?)
String found where operator expected at ./popup line 14, near "mzegan" -I ""
Scalar found where operator expected at ./popup line 14, near "" -I "$ip"
(Missing operator before $ip?)
String found where operator expected at ./popup line 15, near """
(Might be a runaway multi-line "" string starting on line 14)
(Missing semicolon on previous line?)
Scalar found where operator expected at ./popup line 15, near ""$komp"
(Missing operator before $komp?)
String found where operator expected at ./popup line 15, near "$komp" ""
(Missing operator before " "?)
syntax error at ./popup line 14, near ""echo "$tresc_popup"
Execution of ./popup aborted due to compilation errors.
Jak wpisuje parametry to też jest kapa robie to tak:
skrypt IP TRESC
co robie ewentualnie źle?
Offline


Moderator



Jako root wlaczasz ?:>
U mnie niby dziala ale wpisuje jkakies ciagi cyferek zamist nazwy kompa :(

Offline


Użytkownik



u mnie dalej nie chodzi uruchomiłem jako root,
wywoluje to nastepująco (bo moze tu cos zle robie)
skrypt IP tresc
czy mają być jakieś pauzy albo co?
Offline
Zobacz tak :
system "echo $tresc_popup | smbclient -U Maverick -I $ip -M $komp" ;
Offline


Moderator



Jak na razie sie wyklada na tej linijce
$komp = `nmblookup -A "$ip" |grep -v "<GROUP>" | awk '($2 eq "<00>") {print $1}' | tr -d 'n'` ;
wychodza z tego jakies ciagi ca ma wyjsc nazwa kompa :(

Offline




matka przelozona


Moderator



Ja sie tym zajme ale jak tylko bedzie to dzialalo w 100 % :)

Offline


Moderator



Witam! Po dluzszej przerwie usiadlem do tego no i mam taki maly blad:
Tresc skryptu:
#!/usr/bin/perl
if(@ARGV)
{
$ip = $ARGV[0] ;
if ($ip =~ /(d+.d+.d+.d+)/)
{
printf "$1 n";
$komp = `nmblookup -A "$ip" |grep -v "<GROUP>" | awk '($2 -eq "<00>") {print $1}' | tr -d 'n'` ;
printf "$komp n" ;
}
}
else
{
printf "Uruchom podając jako parametry ip i treśc wiadomości. n";
}
Po uruchomieniu tego skryptu komenda perl netsend 192.168.0.10 mam taki wynik:
192.168.0.10
192,16800,1192,16800,1192,16800,1192,16800,1192,16800,1192,16800,1192,16800,1192,16800,1
A powinna sie pokazac nazwa kompa w sieci lokalnej o tym ip, co mma zle ?

Offline