Esiste un comando del terminale per determinare se una sessione di condivisione dello schermo da una macchina remota non è appena iniziata ma viene anche visualizzata attivamente?
dettagli:
Ho un processo in background (Perl) in esecuzione su una macchina remota che emette comandi di sistema come
netstat -n | grep 5900
ps aux | grep ScreensharinAgent
per verificare che sia stata avviata una sessione di condivisione dello schermo. Entrambi questi comandi restituiscono i dati previsti nel momento in cui inizia l'autenticazione di condivisione dello schermo.
Tuttavia, mi piacerebbe anche che il processo determini se lo schermo è stato visualizzato correttamente.
da4 's commenta qui si avvicina ma non posso / non so come modularizzare% % co_de.
Ecco una versione modificata dello snippet Perl su cui sto lavorando
$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;
}
Esiste un comando terminale che può essere emesso dal processo in background della macchina remota per determinare se la sessione di condivisione dello schermo non è solo avviata ma anche attivamente visualizzata?
Per ovvi motivi, soluzioni come quella accettata in la domanda che ho citato non funzionerà qui.