Zapytaj przed uruchomieniem „restartu”?

4

Często (cały dzień każdego dnia) mam otwartą kartę terminala Minicom i wykonuję polecenia we wbudowanym systemie Linux z mojego laptopa Ubuntu. Czasami muszę wykonać rebootpolecenie, a czasem wstydzę się przyznać, przypadkowo wykonuję rebootw niewłaściwej zakładce, a mój laptop robi dokładnie to, co zostało zaprojektowane bez zadawania żadnych pytań ...

Używam Ubuntu 16.04 LTS i próbowałem zainstalować Molly-Guard, ale to nie przyniosło żadnego efektu.

99 razy na 100 Nie zepsułem się, ale mój laptop potrzebuje 10 minut na ponowne uruchomienie i wykonuję rebootwystarczająco często, aby było to denerwujące.

Czy jest trochę czarnej magii, którą mogę dodać do niestandardowego skryptu bash do konfiguracji okna terminala, który utworzy rebootmapę do czegoś innego (najlepiej na tę sesję bash)?

Nathan Owen
źródło
7
Co powiesz na białą magię, na przykład zaklęcie, by nie siedzieć przy monicie uprzywilejowanym przez administratora tak często, że błąd popełni reboottwoje stanowisko pracy.
DopeGhoti
1
Może następnym razem ponownie instaluję system operacyjny ... Obecnie wszystkie moje ścieżki zależą od roota i jestem zbyt leniwy, aby je naprawić. Jest też okropne, że muszę wpisać 5 dodatkowych znaków dla każdego innego polecenia ... Nie, zdecydowanie lepiej jest spędzać czas na niejasnych obejściach i włamaniach, aby nie popsuć. :-)
Nathan Owen
To molly-guardnie działa jest interesujące, ponieważ implementuje również zabezpieczenie w podobny sposób jak inne rozwiązania (/ usr / sbin / reboot, aby przejąć / sbin / reboot). Wspominasz o niestandardowej funkcji konfiguracji okna, czy to już nie działa z PATH?
robbat2
@DopeGhoti niekoniecznie naprawi rzeczy. Jeśli systemdkorzystasz z systemu Linux (którym jest Ubuntu 16.04), użytkownicy jedyni zalogowani do systemu mogą ponownie uruchomić komputer bez podnoszenia uprawnień (tj. Bez logowania sudo/ su/ jako zalogowanie jako root). Uważam, że istnieją ustawienia kontrolujące to zachowanie, ale wiele dystrybucji zorientowanych na jednego użytkownika (takich jak Ubuntu) domyślnie je włącza.
RM
@ robbat2 Nie. Oto moja ścieżka (pasuje do ścieżki w ~ / .bashrc): / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games : / usr / local / games: / snap / bin
Nathan Owen

Odpowiedzi:

11

W ~/.bashrcpliku na laptopie ( nie na wbudowanym komputerze) dodaj wiersz:

reboot() { echo  "Hey, don't do that!"; }

Jeśli naprawdę chcesz uruchomić rebootna laptopie, możesz obejść tę funkcję, uruchamiając sudo rebootlub /sbin/reboot.


Lub możesz uczynić go bardziej przyjaznym, jak sugerował man0v , używając:

reboot () { echo 'Reboot? (y/n)' && read x && [[ "$x" == "y" ]] && /sbin/reboot; }

Sugeruję wprowadzenie takiej funkcji, ~/.bashrcponieważ chcemy, aby była dostępna w interaktywnych sesjach bash.

John1024
źródło
3
lub mógłbyś miećreboot () { echo 'Reboot? (y/n)' && read x && [[ "$x" == "y" ]] && /sbin/reboot }
man0v
Jest to prawdopodobnie lepsze rozwiązanie niż to, które wymyśliłem, ponieważ moje obejmuje modyfikację zmiennej PATH.
Nathan Owen
-2

Dobra, po pobawieniu się trochę więcej znalazłem dobre rozwiązanie:

Utworzyłem plik bash o nazwie „reboot” w / usr / sbin /, a następnie dodałem pełną ścieżkę / usr / sbin / reboot z przodu $ PATH.

Oto skrypt:

read -p "Are you sure? " -n 1 -r
echo    
if [[ $REPLY =~ ^[Yy]$ ]]
then
    /sbin/reboot
fi

Może nie jest to najlepsze rozwiązanie ...

Nathan Owen
źródło
2
Bardzo dobre. Jednym z potencjalnych problemów jest to, że zmiana pliku systemowego /usr/sbin/rebootmoże powodować problemy z narzędziami systemowymi, a także programami X11 / GUI, które zależą od domyślnego zachowania /usr/sbin/reboot.
John1024,
Nadal pozwala ci zachować przykre nawyki pozostawiania pytań superużytkownika otwartych dla błędnych rebootpoleceń.
DopeGhoti
W rzeczywistości stwierdziłem, że nie musiałem nawet pisać sudo, aby polecenie ponownego uruchomienia działało, nie jestem pewien, dlaczego. W każdym razie nie pozostawiam otwartych terminali superużytkowników. Głównie pamiętam, aby zablokować komputer przed odejściem ... głównie. :-)
Nathan Owen
@ John1024 nie są zależne żadne narzędzia systemowe /usr/sbin/reboot, ponieważ w systemie podstawowym nie ma takiego pliku. Dostępny rebootjest plik binarny /sbin.
Ruslan
-1 ponieważ: nie będziesz edytować rzeczy w / usr / sbin
Kamil