【发布时间】:2012-01-24 01:53:10
【问题描述】:
我四处寻找这个问题的答案,但找不到。
我编写了一个简单的脚本来进行初始服务器设置,我希望它在完成时从根目录中删除/取消链接。我已经尝试了一些我在谷歌上搜索过的解决方案(例如 /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/ || exit 1. -
嗨乔纳森。非常感谢您的反馈。正如你所知道的,我对这一切都很陌生。我在放置 rm test.sh 部分时犯了一个非常基本的错误,但现在它工作正常。还更正了 rm 命令。再次感谢!
-
为什么要删除这个脚本?例如,如果它是你在远程主机上运行的一次性的东西,你可以运行
ssh host < script.sh而不用复制它。 -
@RFH:这不是这个特定问题的答案,但也许可以帮助您以不同的方式解决问题。如果您正在尝试管理一组服务器的配置,您可能需要查看合适的配置管理工具,例如 puppet (puppetlabs.com)、cfengine (cfengine.com)、salt (saltstack.com) 等。那些工具不仅可以进行初始设置,还可以保证之后的配置保持正确。