我想从以下网址下载脚本:http : //dl.dropbox.com/u/11210438/flockonus-stack.sh并执行它。我的猜测是,使用wget重命名它,对其进行chmod并执行。
在Ubuntu上执行此操作的命令是什么?
我想从以下网址下载脚本:http : //dl.dropbox.com/u/11210438/flockonus-stack.sh并执行它。我的猜测是,使用wget重命名它,对其进行chmod并执行。
在Ubuntu上执行此操作的命令是什么?
Answers:
小心
在运行脚本之前,您是否信任编写该脚本的人?
例如,您是否希望脚本包含此内容?
echo "brain1" > /etc/hostname
那将尝试更改您的主机名。
供以后参考,如果在验证脚本正确并且没有恶意之后,可以像这样在一行中运行它:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
但是,请先单独下载并阅读,然后再首次运行。
另请注意,使用此方法可能无法正常运行已下载脚本中的交互式提示。
apt-get install
台词?如果apt-get
将安装任何其他依赖项,它将询问您,如果不能安装,它将退出以确保安全。您可以将所有从属程序包添加到命令行参数,也可以考虑添加-y
,例如apt-get -y install...
非交互式脚本
wget -O - http://website.com/my-script.sh | bash
请注意,使用此方法时,交互式脚本将不起作用。
互动脚本
为了使交互式脚本正常工作,您可以使用以下命令:
bash <(wget -qO- http://website.com/my-script.sh)
需要以超级用户身份运行的交互式脚本
警告:这非常危险。不建议。
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
请注意,您不能简单地使用它,sudo bash
因为使用<(...)
将创建一个虚拟文件,并且不能从root bash实例访问它的文件描述符。它必须在需要读取虚拟文件的同一用户上执行,因此必须以其自己的命令在root用户外壳中发送。
该脚本是从我这里来的,它很安全。。喜欢单线脚本,但是,它有一些没有运行的交互式代码。
当apt-get调用dpkg运行时,它将刷新stdin。如果使用的命令是curl blah | bash
,则基本上是通过STDIN将页面内容发送到bash。如果您的命令之一是apt-get,然后运行,则其他所有命令都会被刷新。
诀窍是使用这样的命令apt-get install --yes denyhosts </dev/null
。这为apt-get提供了不同的输入,并且只刷新了/ dev / null而不是脚本的其余部分。
如果要查看通过远程脚本安装某些内容的完整示例,则可能需要查看此脚本来设置denyhosts
出于记录目的,为此,我更喜欢使用curl而不是wget,但是wget也应该很好。
所有这些示例都遗漏了相当重要的一点。如果使用url http://dl.dropbox.com/u/11210438/flockonus-stack.sh
,则每次下载时都需要审核脚本,因为您和保管箱之间的网络路径上的任何人都可以修改该脚本。如果切换到HTTP 小号://dl.dropbox.com/u/11210438/flockonus-stack.sh,你不会有不安全的该源。
(Dropbox尝试将http URL重定向到https,但是在发生网络攻击的情况下,wget将永远无法与真正的Dropbox对话,也永远不会看到重定向)
尝试简单地按照您在wget中指定的方式下载它,然后直接执行它。您可以看中并为要下载的脚本使用变量等,但这可以解决问题。
例如:
!#/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
echo "brain1" > /etc/hostname
很容易做到rm -rf /
。