Strona główna Ubuntu C++ Hardware HTML i javascript Java Software SQL

Awk|bash – TightVNC zablokowana sesja zdalnego dostępu.

Dodano: 2012-06-23

TightVNC jest dobrym narzędziem do kontroli zdalnej urządzeń komputerów osobistych jak i serwerów. Narzędzie to jest bezpłatne, można go używać w projektach komercyjnych (integrując z nim program) lecz po opłaceniu licencji.

Niestety zdarzają się wypadki nagłego zerwania połączenia w czasie pracy na zdalnym pulpicie, które nie wynikają z przerw w dostawie internetu lecz nieprawidłowej pracy tightvncserver. Późniejsze próby połączenia kończą się niepowodzeniem.

Po zalogowaniu się na urządzenie przez SSH, można spróbować stworzyć nową sesję zdalnego pulpitu, jednak w przypadku wystąpienia błędu z wcześniejszą praca na niej zakończy się tuż po zalogowaniu na urządzenie, lub nawet nie będzie to możliwe. Najlepiej zakończyć proces korzystają z komendy tightvncserver -kill :[number display], jeżeli operacja zakończy się nie powodzeniem, należy wyrzucić urządzenie i kupić nowe (żarcik :).

Jeżeli próba zakończenie procesu przez tightvncserver nie uda się, to kolejny krok to usunięcie ręcznie dwóch plików /tmp/.X[numberDisplay]-lock oraz /tmp/.X11-unix/X[number Display]. Chcąc usunąć sesję numer 1 usuwamy pliki /tmp/.X1-lock oraz /tmp/.X-unix/X1.

Teraz powinno wszystko wrócić do normy – przynajmniej do następnego problemu. Jeżeli powyższe operację nie pomogły pozostaje zresetowanie urządzenia, co nie zawsze można wykonać.

Poniżej skrypt, który automatycznie usuwa pliki danej sesji, należy tylko podać jej numer.

#!/bin/bash

echo "The script removes locked files of remote display."
read -p "Type the number of the remote display: " number;

if [ "$number" =  "" ]; then
	echo "The number is not specified!!!";
	exit 112;
fi

cd /tmp
ls -la | awk -vd=$number 'BEGIN{
}{
	if ((index($9, ".") != 0) && ((index($9, "lock") != 0))){
		if ($9 == ".X"d"-lock"){
			print "Deleting...";
			system("rm /tmp/.X"d"-lock");
			system("rm /tmp/.X11-unix/X"d);
		}
	}
}
'

exit 0;