cmd.pl 830 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use IO::Socket::UNIX;
  5. use POSIX qw(ceil floor);
  6. # App config
  7. my $TIMEOUT = 5;
  8. my $TEMP_DIR = `getconf DARWIN_USER_TEMP_DIR`;
  9. chomp($TEMP_DIR);
  10. my $DATA_DIR = $TEMP_DIR . 'plexMonitor/';
  11. # Debug
  12. my $DEBUG = 0;
  13. if ($ENV{'DEBUG'}) {
  14. $DEBUG = 1;
  15. }
  16. # Command-line parameters
  17. my ($DEV, $CMD) = @ARGV;
  18. my $CMD_FILE = $DATA_DIR . uc($DEV) . '.socket';
  19. # Sanity check
  20. if (!-d $DATA_DIR || !-S $CMD_FILE) {
  21. die("Bad config\n");
  22. }
  23. # Socket init
  24. my $sock = IO::Socket::UNIX->new(
  25. 'Peer' => $CMD_FILE,
  26. 'Type' => SOCK_DGRAM,
  27. 'Timeout' => $TIMEOUT
  28. ) or die('Unable to open socket: ' . $CMD_FILE . ": ${@}\n");
  29. # Send the command
  30. $sock->send($CMD)
  31. or die('Unable to write command to socket: ' . $CMD_FILE . ': ' . $CMD . ": ${!}\n");
  32. # Cleanup
  33. $sock->close();
  34. undef($sock);
  35. exit(0);