Szukałem odpowiedzi na to, ale nie mogłem go znaleźć.self-usuwanie skryptu powłoki
Napisałem prosty skrypt, który wykonuje wstępne ustawienia serwera i chciałbym, aby usunął/odłączył się od katalogu głównego po zakończeniu. Próbowałem już wielu rozwiązań, z których googlowałem (na przykład/bin/rm $ test.sh), ale skrypt wydaje się zawsze działać. czy to możliwe? Poniżej znajduje się mój dotychczasowy scenariusz.
#! /bin/bash
cd /root/
wget -r -nH -np --cut-dirs=1 http://myhost.com/install/scripts/
rm -f index.html* *.gif */index.html* */*.gif robots.txt
ls -al /root/
if [ -d /usr/local/psa ]
then
echo plesk > /root/bin/INST_SERVER_TYPE.txt
chmod 775 /root/bin/*
/root/bin/setting_server_ve.sh
rm -rf /root/etc | rm -rf /root/bin | rm -rf /root/log | rm -rf /root/old
sed -i "75s/false/true/" /etc/permissions/jail.conf
exit 1;
elif [ -d /var/webmin ]
then
echo webmin > /root/bin/INST_SERVER_TYPE.txt
chmod 775 /root/bin/*
/root/bin/setting_server_ve.sh
rm -rf /root/etc | rm -rf /root/bin | rm -rf /root/log | rm -rf /root/old
sed -i "67s/false/true/" /etc/permissions/jail.conf
break
exit 1;
else
echo no-gui > /root/bin/INST_SERVER_TYPE.txt
chmod 775 /root/bin/*
/root/bin/setting_server_ve.sh
rm -rf /root/etc | rm -rf /root/bin | rm -rf /root/log | rm -rf /root/old
sed -i "67s/false/true/" /etc/permissions/jail.conf
break
exit 1;
fi
Jeśli zamierzasz odtworzyć samopasujący skrypt, musisz upewnić się, że masz kopię zapasową za każdym razem, zanim ją przetestujesz. Lub możesz zamienić 'rm' na' $ {RM: -/bin/rm} 'na potrzeby testowania. Wyprowadzanie przez Ciebie kodu 'rm' do następnego polecenia' rm' jest dość dziwne; 'rm' nie czyta ze standardowego wejścia, chyba że przejdzie ono w interakcję (co nie będzie z' -rf'), ani nie zapisze na standardowe wyjście. Powtarzanie jest złe. I nie ma mowy, żebym chciał, żebyś usunął rzeczy z '/ root' na moich maszynach. Sprawdź także, czy 'cd/root /' działa; 'cd/root/|| zjazd 1'. –
Cześć Jonathan. Wielkie dzięki za opinię. Jak możesz stwierdzić, jestem całkiem nowy w tym wszystkim. Robiłem naprawdę podstawowy błąd przy umieszczaniu części rm test.sh, ale teraz działa dobrze. Poprawiono również polecenie rm. Dzięki jeszcze raz! – RFH
Dlaczego musisz usunąć ten skrypt? Na przykład, jeśli jest to jednorazowa operacja na zdalnych hostach, możesz uruchomić 'ssh host
l0b0