Действительно ли возможно выполнить результат wget как команда?

Я не думаю, что существует способ получить точное поведение -i, но я имею noclobber набор, который уже предотвращает перезапись существующие файлы.

Посмотрите эту страницу для примера использования.

Можно испытать команду как это (и если Вы любите ее, включаете ее в Ваш файл запуска),

$ set -o noclobber

Пример:

$ ls > ls.out
$ set -o noclobber
$ ls > ls.out
bash: ls.out: cannot overwrite existing file
$

Обновление:

Поскольку @jsbillings упоминает в полезном комментарии ниже, для переопределения noclobber в bash можно использовать >|

Так как я, прежде всего, использую tcsh (a csh вариант), оператор переопределения >!

4
04.01.2014, 22:31
2 ответа

Пока Вы понимаете опасности, можно передать вывод по каналу к оболочке:

wget -O - http://foo.com/somescript | sh
9
27.01.2020, 20:47
  • 1
    Я могу поместить некоторые переменные в удаленный файл? в основном: удаленный файл имеет./runxxx-id= $id, и мой локальный файл имеет id=1 и затем wget удаленный файл –  KoKo 04.01.2014, 21:02
  • 2
    @KoKo, самая легкая вещь сделать состояла бы в том, чтобы использовать переменную среды. –  jordanm 04.01.2014, 21:21

Можно сделать это в нажатии или вытянуть путь.

Если Вы хотите сделать это получение по запросу путем, можно использовать wget или curl. От каждого хоста сделайте:

wget -O- http://foo.com/somescript | bash

или

bash <(wget -O- http://foo.com/somescript)

Однако могло бы быть легче сделать это нажатие путь. От центрального хоста сделайте:

for host in host1 host2 host3; do
  cat script.sh | ssh "$host" bash
done

Другая опция использовала бы puppet или chef. Но в зависимости от того, что Вы делаете, который мог бы быть небольшим излишеством.

2
27.01.2020, 20:47

Теги

Похожие вопросы