Travis L. Bean
2003-Dec-28 08:24 UTC
[Samba] How to send a domain wide message with smbclient?
Is there a way to send a message to all users currently logged into a Samba domain controller? The reason why I ask is that I have a Samba 3.x.x primary/backup domain controller setup and as soon as the system monitor detects that the primary domain controller is offline I would like to execute a command to send a domain wide message telling all domain users to save their work to the local machine, log off the pdc and log back in to the bdc. Is there a way to accomplish this with smbclient or another open source software solution? Thanks, Travis L. Bean Systems Administrator Bio-Logic Aqua Technologies Grants Pass, OR - United States
Andrew Gaffney
2003-Dec-28 14:12 UTC
[Samba] How to send a domain wide message with smbclient?
Travis L. Bean wrote:> Is there a way to send a message to all users currently logged into a > Samba domain controller? The reason why I ask is that I have a Samba > 3.x.x primary/backup domain controller setup and as soon as the system > monitor detects that the primary domain controller is offline I would > like to execute a command to send a domain wide message telling all > domain users to save their work to the local machine, log off the pdc > and log back in to the bdc. Is there a way to accomplish this with > smbclient or another open source software solution?You can send a message with a command such as 'echo "Testing" | smbclient -M <machine>'. I don't know if there is a way to send a message to all clients. You could try to do it yourself. If you have any bash/sed/awk or perl abilities, you could write a script that parses the output of 'smbstatus' to determine which clients are currently logged on to the domain. It could then go through a loop and send the message to every client. In perl: #!/usr/bin/perl open PIPE, "smbstatus |"; foreach $line (<PIPE>) { if($line =~ /\d+\s+(\S+)\s+\S+\s+(\S+)\s+\((.+)\)/) { system "echo 'Attention user $1! PDC is down. Please save all work to local disk, logout, and log back in on the BDC.' | smbclient -M $2 -I $3"; } } I ran a brief test on this and it appears to work correctly with 3.0.1. -- Andrew Gaffney
Andrew Gaffney
2003-Dec-29 15:12 UTC
[Samba] How to send a domain wide message with smbclient?
From a quick glance at the script, it does the same thing as the script that I posted. Travis L. Bean wrote:> I found a working script to send a domain wide message: > http://www.netsys.com/sunmgr/1998-10/msg00122.html. This is a modified > version of the /examples/misc/wall.perl included in the Samba 3.x.x > distribution. The wall.perl script in the Samba distribution appears to > be broken, because it does not send a message unless a host name is > provided. Perhaps someone on the samba team would be so kind as to view > the differences between these two scripts and incorporate these > modifications into the wall.perl script that is included in the Samba > distribution. > > > Thanks, > > Travis > > -----Original Message----- > From: Andrew Gaffney [mailto:agaffney@skylineaero.com] > Sent: Sunday, December 28, 2003 6:05 AM > To: Travis L. Bean > Cc: samba@lists.samba.org > Subject: Re: [Samba] How to send a domain wide message with smbclient? > > Travis L. Bean wrote: > >>Is there a way to send a message to all users currently logged into a >>Samba domain controller? The reason why I ask is that I have a Samba >>3.x.x primary/backup domain controller setup and as soon as the system > > >>monitor detects that the primary domain controller is offline I would >>like to execute a command to send a domain wide message telling all >>domain users to save their work to the local machine, log off the pdc >>and log back in to the bdc. Is there a way to accomplish this with >>smbclient or another open source software solution? > > > You can send a message with a command such as 'echo "Testing" | > smbclient -M <machine>'. I > don't know if there is a way to send a message to all clients. You could > try to do it > yourself. If you have any bash/sed/awk or perl abilities, you could > write a script that > parses the output of 'smbstatus' to determine which clients are > currently logged on to the > domain. It could then go through a loop and send the message to every > client. In perl: > > > #!/usr/bin/perl > > open PIPE, "smbstatus |"; > foreach $line (<PIPE>) { > if($line =~ /\d+\s+(\S+)\s+\S+\s+(\S+)\s+\((.+)\)/) { > system "echo 'Attention user $1! PDC is down. Please save all work > to local disk, > logout, and log back in on the BDC.' | smbclient -M $2 -I $3"; > } > } > > > I ran a brief test on this and it appears to work correctly with 3.0.1. >-- Andrew Gaffney