Toon posts:

[Samba| popup message aan alle client sturen hoe?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Met smbclient kun je naar een host een windows popup message sturen.
code:
1
smbclient -M host

Maar nu wil ik naar alle client tegelijk een bericht sturen. Ik heb al vanalles geprobeerd maar samba kan de name niet resolven als je meer dan de een hostname of andere statements meegeeft

Wie heeft er een oplossing?

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 07:47
Probeer er eens #<getal> achter te zetten dus:
smbclient -M werkgroep#01

Die getallen kun je op http://www.cotse.com/nbcodes.htm vinden, waarbij sowieso #03 voor username bruikbaar zou moeten zijn.

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

Spider.007

* Tetragrammaton

Waarom zou je als snelle oplossing geen loop gebruiken; of meerdere calls waarin je naar een lijstje clients een bericht stuurt?

---
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


Verwijderd

Topicstarter
Jelmer schreef op 04 januari 2004 @ 17:13:
Probeer er eens #<getal> achter te zetten dus:
smbclient -M werkgroep#01

Die getallen kun je op http://www.cotse.com/nbcodes.htm vinden, waarbij sowieso #03 voor username bruikbaar zou moeten zijn.
Ik begrijp niet volledig waar je heen wilt, maar ik heb wat zitten spelen het de nrs maar krijg het niet voor elkaar om alle clients te benaderen.
code:
1
Cannot resolve name LAN#0x3
Spider.007 schreef op 04 januari 2004 @ 18:20:
Waarom zou je als snelle oplossing geen loop gebruiken; of meerdere calls waarin je naar een lijstje clients een bericht stuurt?
Heb ik ook over zitten na te denken, maar je moet wel weten wie er dan op dat moment onder windows werken, ik heb al zitten spelen met smbstatus | grep enz maar dat werk ook niet helemaal.

Er moet toch een manier zijn om alle clients te berichten of op zijn minst met een trick in bash te toveren en vervolgens in een file te zetten ofzo?

  • woutur
  • Registratie: Maart 2000
  • Laatst online: 16:24

woutur

Klauwtjes uit!

Volgens mij moeten de clients dan wel winpopup draaien. Zonder krijgen ze volgens mij geen messages.

Als je niet de moeite neemt je post in net Nederlands te schrijven, neem ik de moeite niet hem te lezen.


  • Zwelgje
  • Registratie: November 2000
  • Laatst online: 20-01 19:37
woutur schreef op 04 januari 2004 @ 20:19:
Volgens mij moeten de clients dan wel winpopup draaien. Zonder krijgen ze volgens mij geen messages.
win9x idd, maar nt/2000/xp/2003 hebben de messenger service draaien (niet te verwarren met msn)

A wise man's life is based around fuck you


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

code:
1
smbstatus | grep IPC\\$ | awk '{ print $3 }'

Zo krijg je in principe een lijstje met namen van machines die ingelogd zijn.. Dat kun je dan weer in een loop plakken en vervolgens die machines allemaal een smb message sturen.

Let op: untested. Maar met wat kleine aanpassingen kun je ook wel andere data uit dat smbstatus lijstje halen.

[ Voor 18% gewijzigd door CyBeR op 04-01-2004 21:04 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Topicstarter
CyBeR schreef op 04 januari 2004 @ 21:03:
code:
1
smbstatus | grep IPC\\$ | awk '{ print $3 }'
cool... beetje aangepast en ik krijg nu in ieder geval een lijstje van de clients.

IPC\\ is namelijk maar heel tijdelijk alleen wanneer er een verkenner wordt geopend
code:
1
smbstatus | grep data | awk '{ print $5 }'

(waar data de meeste gebruikte mount is)

Nu nog even oefenen met loops en het moet mogelijk zijn...?

[ Voor 4% gewijzigd door Verwijderd op 04-01-2004 21:55 ]


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

Spider.007

* Tetragrammaton

CyBeR schreef op 04 januari 2004 @ 21:03:
code:
1
smbstatus | grep IPC\\$ | awk '{ print $3 }'

Zo krijg je in principe een lijstje met namen van machines die ingelogd zijn.. Dat kun je dan weer in een loop plakken en vervolgens die machines allemaal een smb message sturen.

Let op: untested. Maar met wat kleine aanpassingen kun je ook wel andere data uit dat smbstatus lijstje halen.
Waarom grep en awk als het ook in 1 statement kan?
code:
1
smbstatus | awk '/IPC\$/ { print $5 }'
:)
Verwijderd schreef op 04 januari 2004 @ 21:54:
[...]

cool... beetje aangepast en ik krijg nu in ieder geval een lijstje van de clients.

IPC\\ is namelijk maar heel tijdelijk alleen wanneer er een verkenner wordt geopend
code:
1
smbstatus | grep data | awk '{ print $5 }'

(waar data de meeste gebruikte mount is)

Nu nog even oefenen met loops en het moet mogelijk zijn...?
Als je iedereen wilt kun je beter een grep op het IP adres oid doen; ik zal eens kijken of tail en head dit nog kunnen verbeteren :)

[ Voor 38% gewijzigd door Spider.007 op 04-01-2004 22:07 ]

---
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


  • defl8te
  • Registratie: Augustus 2001
  • Laatst online: 09-09-2024

defl8te

weetikkût

ik heb ooit eens zo'n proggie geschreven, pakte de leases van mn dhcpd en klopte die naar smbclient -M, kzal ff zoeken...

Chriet Titulaer is de man


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

in een loop wordt het iets als
Bash:
1
for i in $(smbstatus | grep data | awk '{ print $5 }'); do echo "bericht" | smbclient -M $i); done


als ik me smbclient goed herinner.. berichtje moet op stdin toch?

All my posts are provided as-is. They come with NO WARRANTY at all.


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

Spider.007

* Tetragrammaton

Waarschijnlijk is dit de netste oplossing: (ervanuitgaand dat je netwerkadressen allemaal in het 192.* segment vallen. Hier zit ook meteen een beveiliging tegen het versturen naar meerdere berichten naar 1 user bij :)
code:
1
smbstatus -S|awk '/192/ {print $5}'|sort|uniq

[ Voor 3% gewijzigd door Spider.007 op 04-01-2004 22:06 ]

---
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


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

Spider.007

* Tetragrammaton

Nog mooier:

code:
1
smbstatus -S|tail -`expr \`smbstatus -S |wc -l\` - 4`|sed '/^$/d'|awk '{print $5}'|sort|uniq


Uitleg:
smbstatus -Som alleen shares weer te geven (geen locks dus). Dit voorkomt dat je fouten krijgt als er een lock in een share zit met de naam data (die zou door de grep heenkomen van CyBeR)
tail -`expr \`smbstatus -S |wc -l\` - 4`zorgt ervoor dat de header van smbstatus wordt weggehaald (hij doet een tail op smbstatus met het totaal aantal regels van de output minus 4 (de header))
sed '/^$/d'zorgt voor het verwijderen van de (laatste) lege regel
awk '{print $5}'Print alleen de machinenaam
sort|uniqAlleen unieke machinenamen; voorkomt dat mensen meerdere berichten krijgen als ze meerdere bestanden tegelijk open hebben


:)

[ Voor 214% gewijzigd door Spider.007 op 04-01-2004 23:29 ]

---
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


Verwijderd

Topicstarter
CyBeR schreef op 04 januari 2004 @ 22:00:
in een loop wordt het iets als
Bash:
1
for i in $(smbstatus | grep data | awk '{ print $5 }'); do echo "bericht" | smbclient -M $i); done


als ik me smbclient goed herinner.. berichtje moet op stdin toch?
Super goed CyBeR, bedankt voor de hulp, het werkt als een trein!!!

smbmsg.sh
code:
1
2
3
4
5
6
7
8
9
#!/bin/sh
#===================================================================

msg='System is going in maintenance mode...'
mount='data'

for i in $(smbstatus | grep $mount | awk '{ print $5 }'); do echo $msg | smbclient -M $i; done

#end

[ Voor 6% gewijzigd door Verwijderd op 04-01-2004 22:29 ]


Verwijderd

komba2 kan dit zeer goed als je de precieze functie wil hebben is het misschien een idee om door de source code heen te werken

Verwijderd

Topicstarter
Sorry Spider.007 zag je post te laat...

Deze werkt perfect:
code:
1
smbstatus -S|awk '/10/ {print $5}'|sort|uniq


Deze vind expr niet leuk
code:
1
2
3
4
5
6
smbstatus -S|tail -`expr `smbstatus -S |wc -l` - 4`|sed '/^$/d'|awk '{print $5}'|sort|uniq

expr: too few arguments
Try `expr --help' for more information.
tail: mbstatus: invalid number of seconds
bash: popd: directory stack empty

[ Voor 83% gewijzigd door Verwijderd op 04-01-2004 22:43 ]


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

Spider.007

* Tetragrammaton

Die expr was dan ook alleen maar om wat lege regels te vermijden; zolang de header van smbstatus niet meer dan 4 elementen heeft zal het ook werken als je idd de tail weglaat :) Ik heb hem btw gefixed; er waren wat escape characters weggevallen; maar je kunt hem net zo goed weghalen :)

---
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


Verwijderd

Topicstarter
Werkt goed hoor! Je kan er ook nog voor kiezen om met set $msg te zetten voor dat je het scripts afschiet.

code:
1
2
3
export msg="bericht"
/usr/local/bin/smbmsg
unset $msg


Bedankt nog Spider!

  • Eastern
  • Registratie: Augustus 2000
  • Laatst online: 19-02 13:26
Ik doe het zo:

code:
1
echo "Blaat" | smbclient -R wins -M host &


Dan doet hij hem direct naar de achtergrond omdat als er anders een bepaalde computer niet bereikbaar is en hij heel erg lang gaat wachten.
Pagina: 1