[php] Commando's koppelen aan waardes array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 22:21

Erhnam

het Hardware-Hondje :]

Topicstarter
In php heb ik een script gebouwd wat een lijst met usernames verzameld die worden gevonden op het unix systeem. Nu wil ik het script ietsje uitbouwen en proberen commando's te koppelen aan de waardes die worden gevonden in de array.

print_r geeft de volgende waarde:

Array ( [0] => bfuser01 [1] => bfuser02 [2] => bfuser03 [3] => bfuser04 [4] => bfuser05 [5] => bfuser06 [6] )

Met foreach probeer ik de array te manipuleren. Dit probeer ik met het onderstaande stukje script. De bedoeling is dat met het netstat commando wordt bepaald of de server actief of niet actief is.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach ($result as $inhoud) {
$inhoud = $inhoud;
echo "$inhoud<br>\n";
exec ("'netstat -ea | grep $inhoud'", $userstatus);
if ( $userstatus == NULL )
{
echo "Server status offline!";
}
else {
echo "Server status online!";
}
print ("<br>");
}


Blijkbaar gaat er iets in het script niet goed. Met
PHP:
1
echo nl2br(implode("\n",$userstatus));
heb ik geprobeerd uit te lezen en het blijkt dat deze waardes leeg zijn. Als ik het netstat commando afzonderlijk test op mijn machine krijg ik wel correcte waardes terug. Weet er iemand wat ik misschien verkeerd doe?

[ Voor 7% gewijzigd door Erhnam op 08-02-2005 16:54 ]

http://www.xbmcfreak.nl/


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

En het netstat commando dat je doorgeeft is wel goed? Heb je "'netstat -ea | grep $inhoud'" nou al eens geechoed naar het scherm zoals ik de vorige keer al aangaf?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 22:21

Erhnam

het Hardware-Hondje :]

Topicstarter
Creepy schreef op dinsdag 08 februari 2005 @ 17:04:
En het netstat commando dat je doorgeeft is wel goed? Heb je "'netstat -ea | grep $inhoud'" nou al eens geechoed naar het scherm zoals ik de vorige keer al aangaf?
Yoepie! Ik krijg nu het volgende resultaat. (even quotes verwijderd)

netstat -ea | grep user01
udp 0 0 apollo.:27015 *:* user01 44125410Server status online!
csuser02
netstat -ea | grep user02
udp 0 0 apollo.:27015 *:* user01 44125410Server status online!
csuser03
netstat -ea | grep user03
udp 0 0 apollo.:27015 *:* user01 44125410Server status online!


Het probleem nu is dat hij de status dus niet leegt. Alleen user01 heeft als status online. De rest niet. Hij leegt bij de volgende invoer de status dus niet... :(

[ Voor 33% gewijzigd door Erhnam op 08-02-2005 17:18 ]

http://www.xbmcfreak.nl/


Acties:
  • 0 Henk 'm!

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 19-09 09:59
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
while (list($k, $v) = each($result)) {
echo "$v<br>\n";
exec ("'netstat -ea | grep $v'", $userstatus);
if ( $userstatus == NULL )
{
echo "Server status offline!";
}
else {
echo "Server status online!";
}
print ("<br>");
}
?>


Zo?

zeroxcool.net - curity.eu


Acties:
  • 0 Henk 'm!

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 22:21

Erhnam

het Hardware-Hondje :]

Topicstarter
Met unset heb ik het nu gedaan en dat werkt wel!

http://www.xbmcfreak.nl/


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:51

crisp

Devver

Pixelated

exec
If the output argument is present, then the specified array will be filled with every line of output from the command. Line endings, such as \n, are not included in this array. Note that if the array already contains some elements, exec() will append to the end of the array. If you do not want the function to append elements, call unset() on the array before passing it to exec().

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

En weer zien wij een goed voorbeeld van good-practice "initialiseer altijd de waarden van gebruikte variabelen in de juiste scope"

Overigens wel fijn van PHP dat je zonder problemen ongeinitialiseerde variabelen by-reference mee kan geven aan een functie 8)7, ook met error_reporting op E_ALL

[ Voor 4% gewijzigd door drm op 08-02-2005 18:08 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:51

crisp

Devver

Pixelated

Gek genoeg adviseert de PHP manual dan weer dat je juist de variabele eerst moet unsetten (is feitelijk destroyen) ipv initialiseren 8)7

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

crisp:
Gek genoeg adviseert de PHP manual dan weer dat je juist de variabele eerst moet unsetten (is feitelijk destroyen) ipv initialiseren 8)7
Zo kwam ik erop idd :P

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1