¿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í.