2 votos

¿Existe un comando de Terminal para verificar el uso compartido de pantallas en MacOS?

¿Existe un comando de terminal para determinar si una sesión de pantalla compartida desde una máquina remota no sólo se ha iniciado, sino que también se está viendo activamente?

Detalles:

Tengo un proceso en segundo plano (Perl) ejecutándose en una máquina remota que emite comandos de sistema como

netstat -n | grep 5900
ps aux | grep ScreensharinAgent

para verificar que se ha iniciado una sesión de Screensharing. Ambos comandos devuelven los datos esperados en el momento en que comienza la autenticación de Screensharing.

Sin embargo, también me gustaría que el proceso determinara si la pantalla se está viendo correctamente.

da4 's comente aquí se acerca pero no puedo/no sé modularizar log stream --predicate 'eventMessage contains "Authentication"' .

He aquí una versión modificada del fragmento de Perl en el que estoy trabajando

$owner = "owner"
$user = trim(`stat -f%Su /dev/console`);

while ($user eq $owner) {
my $user = trim(`stat -f%Su /dev/console`);
my %screensharing_processes = (
    "netstat -n | grep 5900" => "\.5900.*?ESTABLISHED",
    "ps aux | grep ScreensharingAgent" => "$user.*?ScreensharingAgent.bundle",
    "terminal_command_to_verify_screensharing" => "some_string_verifying_condition",
#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  );
  while (($command, $value) = each (%screensharing_processes)) {
    my $this_process = `$command`;
    if ($this_process =~ /$value/s) {
      print "$value is up\n";
    } else {
      print "$value is down\n";
    }
  }
  print "\n";
  sleep 1;
}

sub trim {
  return $_[0] =~ s/^\s+|\s+$//rg;
}

¿Existe algún comando de terminal que el proceso en segundo plano de la máquina remota pueda ejecutar para determinar si la sesión de pantalla compartida no sólo se ha iniciado, sino que también se está viendo activamente?

Por razones obvias, soluciones como la aceptada en la pregunta que mencioné no funcionará aquí.

1voto

sjhuk Puntos 16

Ha pasado un minuto desde que Günter Zöchbauer útilmente comentó que La vista de Terminal Mac es Compartir Pantalla está Activada "tiene buenas respuestas".

Allí, Mateusz Szlosek respuestas

netstat -atp tcp | grep rfb

devolverá el estado de rfb puerto 5900.

En MacOS Monterey 12.6.1, emitiendo netstat -atp tcp | grep rfb devolverá una línea que termina con ESTABLISHED si se está viendo activamente Screensharing. Por ejemplo:

 netstat -atp tcp | grep rfb
tcp4       0    342  subdomain.domain.rfb   p1234567-ipoe.ip.90123 ESTABLISHED
tcp4       0      0  *.rfb                  *.*                    LISTEN     
tcp6       0      0  *.rfb                  *.*                    LISTEN  

Si ESTABLISHED no aparece, puede que MacOS Screensharing esté activo pero ningún usuario lo esté viendo activamente.

Gracias Günter Zöchbauer por la pista.

Voy a seguir con Perl modificado script.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X