我想从http://dl.dropbox.com/u/11210438/flockonus-stack.sh下载一个脚本并执行它。我的猜测是,使用 wget 重命名它,修改它,然后执行。
在 Ubuntu 上执行此操作的命令是什么?
Mik*_*kel 60
小心
在运行脚本之前,你相信编写它的人吗?
例如,您是否希望脚本包含此内容?
echo "brain1" > /etc/hostname
Run Code Online (Sandbox Code Playgroud)
这将尝试更改您的主机名。
为了将来参考,如果在验证脚本正确且无恶意后,您可以像这样在一行中运行它:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Run Code Online (Sandbox Code Playgroud)
但是单独下载,第一次运行前先阅读。
另请注意,使用此方法下载的脚本中的交互式提示可能无法正常工作。
Nat*_* F. 17
非交互式脚本
wget -O - http://website.com/my-script.sh | bash
Run Code Online (Sandbox Code Playgroud)
请注意,使用此方法时,交互式脚本将不起作用。
交互式脚本
为了使交互式脚本工作,您可以使用:
bash <(wget -qO- http://website.com/my-script.sh)
Run Code Online (Sandbox Code Playgroud)
需要以 root 身份运行的交互式脚本
警告:这是极其危险的。不建议。
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Run Code Online (Sandbox Code Playgroud)
请注意,您不能简单使用,sudo bash因为 using<(...)将创建一个虚拟文件,并且无法从根 bash 实例访问它的文件描述符。它必须在需要读取虚拟文件的同一用户上执行,因此它必须作为它自己的命令在 root 用户 shell 中发送。
那个脚本是我写的,它是安全的.. 喜欢单行,但是,它有一些没有运行的交互行.. 不知道为什么?
当 dpkg 运行时,由 apt-get 调用,它会刷新标准输入。如果您正在使用类似 的命令curl blah | bash,那么您基本上是通过 STDIN 将页面内容发送到 bash。如果您的命令之一是 apt-get,然后运行,则其他所有命令都将被刷新。
诀窍是使用这样的命令apt-get install --yes denyhosts </dev/null。这给 apt-get 一个不同的输入,它只是刷新 /dev/null 而不是脚本的其余部分。
如果您想查看通过远程脚本安装某些内容的完整示例,您可能需要查看此脚本以设置拒绝主机
为了记录,我更喜欢 curl 而不是 wget,但 wget 也应该没问题。