私はこれに対する答えを見回しましたが、見つけられませんでした。自己削除シェルスクリプト
初期のサーバー設定を行う簡単なスクリプトを作成しましたが、完了時にルートディレクトリから自身を削除/リンク解除したいと思います。私はgoogled(たとえば/ 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'を' $ {RM: -/bin/rm} 'に置き換えてテストすることもできます。 'rm'コマンドを次の' rm'コマンドに出力するコード配管はかなり奇妙です。 'rm'は、対話的に(' -rf'ではない)、標準出力に書き込まない限り、標準入力から読み込みません。繰り返しは悪いです。私のマシン上の '/ root'から削除する方法はありません。また、 'cd/root /'が動作することを確認してください。 'cd/root/||出口1 '。 –
こんにちはジョナサン。あなたのフィードバックに感謝します。あなたが分かるように、私はこのすべてにかなり新しいです。私は本当にrm test.shの部分の配置で本当に基本的な間違いをしていたが、今は正常に動作します。また、rmコマンドを修正しました。再度、感謝します! – RFH
なぜこのスクリプトを削除する必要がありますか?たとえば、リモートホスト上で実行することは一度だけの場合、 'ssh host
l0b0