我環顧四周尋找答案但找不到。自我刪除外殼腳本
我寫了一個簡單的腳本來完成初始服務器設置,我希望它在完成時從根目錄中刪除/取消鏈接。我嘗試了許多解決方案(例如/ bin/rm $ test.sh),但腳本似乎總是保持不變。這可能嗎?以下是我的腳本。
#! /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
如果您打算使用自刪除腳本,則必須確保在每次測試前您都有備份副本。或者你可以用'$ {RM: -/bin/rm}'替換'rm'進行測試。你的代碼管道'rm'輸出到下一個'rm'命令是非常奇怪的; 'rm'既不從標準輸入中讀取,除非它變爲交互式(它不會與-rf一起),也不寫入標準輸出。重複是不好的。我不希望你從我的機器上的'/ root'中刪除東西。另外,請檢查'cd/root /'是否工作。 'cd/root/||出口1'。 –
嗨喬納森。非常感謝您的反饋。你可以說,我對這一切都很陌生。我在安裝rm test.sh部分時犯了一個非常基本的錯誤,但現在它工作正常。還糾正了rm命令。再次感謝! – RFH
爲什麼你需要刪除這個腳本?例如,如果它是在遠程主機上運行的一次性事物,則可以運行'ssh host
l0b0