我环顾四周寻找答案但找不到。自我删除外壳脚本
我写了一个简单的脚本来完成初始服务器设置,我希望它在完成时从根目录中删除/取消链接。我尝试了许多解决方案(例如/ 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