我想从http://dl.dropbox.com/u/11210438/flockonus-stack.sh下载脚本并执行它。 我的猜测是,使用wget重命名它,chmod它,然后执行。
在Ubuntu上做什么命令?
小心
在运行脚本之前,你相信写这个脚本的人吗?
例如,你是否期望脚本包含这个?
echo "brain1" > /etc/hostname
这将尝试改变你的主机名。
为了将来的参考,如果validation脚本是正确的而不是恶意的,你可以像这样在一行中运行它:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
但是单独下载并在第一次运行之前阅读它。
另请注意,使用此方法,下载的脚本中的交互提示可能无法正常工作。
那个剧本是从我这里来的,这是安全的..爱一行,但是,它有一些互动的线路没有运行..不知道为什么?
当dpkg运行时,由apt-get调用,刷新标准input。 如果您正在使用像curl blah | bash
的命令 curl blah | bash
,那么你基本上是通过STDIN发送页面内容到bash。 如果你的一个命令是apt-get,然后运行,其他所有命令都将被刷新。
窍门是使用这样的命令apt-get install --yes denyhosts </dev/null
。 这给apt-get一个不同的input,它只是刷新/ dev / null而不是脚本的其余部分。
如果你想看到一个完整的例子,通过远程脚本安装的东西,你可能想看看这个脚本设置拒绝主机
为了logging,我宁愿curlwget这个,但wget也应该罚款。
所有这些例子都缺less一个相当重要的观点。 如果使用url http://dl.dropbox.com/u/11210438/flockonus-stack.sh
,则每次下载脚本时都需要审核脚本,因为它可以由您之间的networkingpath上的任何人修改和Dropbox。 如果你切换到http://dl.dropbox.com/u/11210438/flockonus-stack.sh ,你将不会有这种不安全的根源。
(Dropbox尝试将http URLredirect到https,但在networking攻击的情况下,wget永远不会对真正的Dropbox说话,并且永远不会看到redirect)
#!/bin/sh if [ ! -f "/tmp/flockonus-stack.sh" ] then wget -O /tmp/flockonus-stack.sh http://dl.dropbox.com/u/11210438/flockonus-stack.sh fi sh /tmp/flockonus-stack.sh
试着简单地下载它,就像你用wget指定的一样,然后直接执行它。 你可以花哨,并使用你想下载的脚本等variables,但这会做的伎俩
例如:
!#/bin/bash #Change to temp directory cd /tmp #Download file using wget wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh #Execute the file sh flockonus-stack.sh