[php] script met smbclient werkt niet goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet niet of ik wel helemaal op de juiste plek zit maar aangezien het hier om een zelfgemaakt script gaat......
Ik heb een scriptje geschreven waarbij met behulp van een formulier een groep (windows) pc's gekozen wordt die een bericht ontvangen.
De groep wordt uit een mysql tabel op een linux server gehaald, dezelfde als waar de web server draait
Het laatste deel (het daadwerkelijke verzenden) v/h script

code:
1
2
3
4
5
6
    $compnaam=$record['naam'];
    echo "$compnaam";
    echo "<br>";
 
// stuur bericht naar
exec("echo " . $bericht . "  | smbclient -M ". $compnaam);


In principe is het script goed (denk ik), de meeste pc's uit de groep krijgen het bericht. Een bepaalde groep echter niet en ik weet dus niet waarom niet. Als ik een aantal van deze pc's handmatig een bericht verstuur werkt het nl wel.

Ik heb gechecked of op deze pc's de messenger service gestart en dat blijkt zo te zijn, verder heb ik geen flauw idee wat de oorzaak kan zijn?
Zijn er issues met betrekking tot smbclient die ik over het hoofd zie wanneer ik op deze manier berichten verzend.

Iemand enig idee?????

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Hoe zien de namen van die computers eruit? Zitten daar toevallig rare karakters of spaties in?

Als je handmatig verstuurd, gebruik je dan ook smbclient, of doe je het dan op een andere manier?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De stations waar de berichten via het script niet aankomen hebben namen als RADEVRG01 waarbij de laatste 2 cijfers steeds verschillen. De stations waar ik wel berichten zie aankomen hebben namen als AZR12345 dus altijd eerst 3 letters gevolgd door 5 cijfers. Deze stations zijn onderling wat betreft software en OS (win2000) identiek aan elkaar (ghost image) (Alle RADEVRGXX zijn identiek aan elkaar evenals de azrXXXXX)

Handmatig log ik via ssh in op de server en typ gewoon "smbclient -M RADEVRG01" vervolgens kan je het bericht tikken en zie ik het wel aankomen.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

heb je weleens geprobeerd eventuele fouten te pipen naar een file? En wat zijn eventuele meldingen die je hierin voorbij ziet komen?

PHP:
1
exec("echo " . $bericht . "  | smbclient -M ". $compnaam.' 1>/tmp/output 2>/tmp/errors');
:?

[ Voor 11% gewijzigd door Spider.007 op 07-01-2004 16:58 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goede suggestie maar ik word er niet wijzer van....

Error blijft leeg...In output komt "steeds" het laatste station uit het rijtje te staan waar hij naar gepoogd heeft een bericht te zenden. Hij geeft dan aan dat er geen connectie gemaakt kan worden.

De eerste poging resulteerde in een "connection to radevrg05 failed"
Ik heb dit station uit de database gehaald, en nog eens geprobeerd, vervolgens zou azr25456 het probleem zijn. Ook deze uit de database gehaald. Daarna zou azr25394 het probleem zijn.
Ik kan in deze gevallen wel gewoon handmatig een bericht naar de stations sturen via smblient zonder dat ik iets fout zie gaan.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Kan het een probleem zijn met timing? Probeer eens een seconde pause in te lassen tussen elke executie van je exec-statement?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Probeer dit eens:
PHP:
1
2
exec("ping ". $compnaam.' 1>>/tmp/output 2>>/tmp/errors')
exec("echo " . $bericht . "  | smbclient -M ". $compnaam.' 1>>/tmp/output 2>>/tmp/errors')

Dit script probeert een `ping` voor de smbclient; en zorgt ervoor dat errors en gewone output worden geappend aan de logs (was dat even vergeten :D) Levert dit enig verschil op? Is elke machine wel pingbaar?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Spider.007: dat werkt misschien niet, aangezien de netbios naam van de machines niet noodzakelijkerwijs overeen hoeft te komen met de hostname zoals die in de DNS server staat.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Soultaker schreef op 08 januari 2004 @ 12:44:
Spider.007: dat werkt misschien niet, aangezien de netbios naam van de machines niet noodzakelijkerwijs overeen hoeft te komen met de hostname zoals die in de DNS server staat.
Oh, dat klopt inderdaad. Is er een andere methode om te controleren of een machine up / bereikbaar is adhv de netbios naam?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Spider.007 schreef op 08 januari 2004 @ 12:52:
Oh, dat klopt inderdaad. Is er een andere methode om te controleren of een machine up / bereikbaar is adhv de netbios naam?
Een Netbios lookup doen en daarna een ping, misschien. Vervelende is dat die Samba tools niet zulke lekkere uitvoer geven. Ik denk trouwens dat de hosts gewoon up zijn (als ze handmatig wel te messagen zijn) dus dan heeft pingen niet zoveel nut.

Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 12:56
Wat is die $record :?

Is dat een dubbele array met alle verkregen velden per machine?
Of is dat gewoon een array met alle verkregen velden voor 1 machine :?

Als die compnaam een array is met alle computernamen die je een bericht verstuurd, dan moet je in die exec die in een loop per machine doorlopen.

let the past be the past.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
en zorgt ervoor dat errors en gewone output worden geappend aan de logs
Dit lampje was bij mij gelukkig ook al gaan branden. :)
Wat is die $record

Is dat een dubbele array met alle verkregen velden per machine?
Of is dat gewoon een array met alle verkregen velden voor 1 machine

Als die compnaam een array is met alle computernamen die je een bericht verstuurd, dan moet je in die exec die in een loop per machine doorlopen.
ik zal ff wat meer van het script laten zien (alle overbodige commentaar regels ff verwijderd)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?

$bericht=$_POST['bericht'];

$users=$_POST['users'];

    echo "bericht &#8220;$bericht&#8221; is verstuurd naar:<br>";

$db = mysql_connect ("localhost", "workstation", "workstation") or die (mysql_error() );

mysql_select_db ("werkstation") or die (mysql_error() );

$werkstation_query = mysql_query("SELECT naam, ip_adres, groep FROM station WHERE groep='$users'") or die (mysql_error() );

while ($record = mysql_fetch_assoc($werkstation_query))

{
    $compnaam=$record['naam'];

    echo "$compnaam";

    echo "<br>";

 exec("echo " . $bericht . "  | smbclient -M ". $compnaam.' 1>>/var/log/send-output 2>>/var/log/errors');
}

?>


Momenteel zit ik met een aantal A4-tjes meldingen te speuren naar overeenkomsten, maar ik zie niets. Een pauze tussen de berichten heb ik nog niet geprobeerd omdat ik zie dat de 1e 9 al fout gaan, vervolgens gaan er 4 goed dan weer 2 fout etc.

voorbeeld stukje uit de logging

added interface ip=127.0.0.1 bcast=127.255.255.255 nmask=255.0.0.0
added interface ip=10.193.9.138 bcast=10.193.255.255 nmask=255.255.0.0
Got a positive name query response from 10.193.9.120 ( 10.193.9.120 )
Connected. Type your message, ending it with a Control-D
sent 38 bytes
added interface ip=127.0.0.1 bcast=127.255.255.255 nmask=255.0.0.0
added interface ip=10.193.9.138 bcast=10.193.255.255 nmask=255.255.0.0
Got a positive name query response from 10.193.9.121 ( 10.193.9.121 )
Connected. Type your message, ending it with a Control-D
sent 38 bytes
added interface ip=127.0.0.1 bcast=127.255.255.255 nmask=255.0.0.0
added interface ip=10.193.9.138 bcast=10.193.255.255 nmask=255.255.0.0
Connection to AZR25490 failed
added interface ip=127.0.0.1 bcast=127.255.255.255 nmask=255.0.0.0
added interface ip=10.193.9.138 bcast=10.193.255.255 nmask=255.255.0.0
Connection to AZR25052 failed


:?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nog steeds geen stap verder.......

Ik heb nog een pause toegevoegd.....sleep (5);....

Behalve dat het nu lekker lang duurt :) maakt het geen enkel verschil.......

Acties:
  • 0 Henk 'm!

  • JQR
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:26

JQR

Staat de messenger service wel aan op alle windowsbakken?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

JQR schreef op 10 januari 2004 @ 14:46:
Staat de messenger service wel aan op alle windowsbakken?
Zoals je kunt lezen werkt het handmatig versturen van een bericht wel zonder problemen...

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Vol goede moed weer begonnen en iets nieuws verzonnen. Ik heb het daadwerkelijke smbclient commando vooraf laten gaan door een ping naar hetzelfde station, met de gedachte dat de routering nog eens bevestigd wordt.

Helaas, alle uitgevoerde pings zijn positief (m.u.v. van enkele pc's die inderdaad uit staan), smbclient reageert echter nog steeds hetzelfde.........

Omdat samba niet helemaal up to date was heb ik ook versie 2.2.7 er op gezet.....ook dit maakt geen verschil....

8)7 :?

Wat kan ik nog proberen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wellicht een opmerking of toevoeging waar niemand wat mee kan...Misschien gaat er opeens een lampje branden bij de redder in nood.

smblookup vanaf de shell (dus niet met het script) naar de stations die het niet doen, geeft ook de melding dat de hostnaam niet geresolved kan worden, dit ondanks het feit dat alle stations in de lmhosts tabel staan opgenomen. Blijkbaar kijkt dit commando niet naar dit bestand. Maakt smbclient gebruik van smblookup om de hostnaam te vinden?????
Pagina: 1