Манипулировать локальными файлами удаленно с Ruby?

StackOverflow https://stackoverflow.com/questions/1686175

Вопрос

Я хотел бы автоматизировать создание символических ссылок на моих ноутбуках из приложения Simple Rails, работающего на удаленном сервере. Мне нужно было бы выполнять задачи ядра на ноутбуке из любого места. Это даже возможно?

Это было полезно?

Решение

Принесите скрипт из удаленного и выполните его

Ваш сервер может создать сценарий оболочки или рубин, который предназначен для выполнения на вашем ноутбуке. Ваш ноутбук теперь должен регулярно проверить этот скрипт и выполнить его. Преимущества этого:

  • Это работает не только для вашего ноутбука, но и для любой другой машины, которая проверяет сценарий.
  • Вам не нужен другой транспорт, чем http
  • Сервер не должен знать о клиенте заранее
  • Это работает для любой другой задачи, чем создание символических ссылок без изменений на стороне клиента.

Клиентская сторона может быть такой же простой, как:

wget -O - "url" | ruby -

или же

wget -O - "url" | sh -

Создайте список символических ссылок на вашем сервере

Ваш сервер может создать список необходимых символических ссылок. На вашей клиентской машине вам понадобится программа, которая регулярно анализирует этот список, и создает символические ссылки. Преимущества:

  • Вам не нужно доверять серверу
  • Ваш сервер не может сделать rm -rf / случайно
  • Вам не нужен другой транспорт, чем http
  • Это работает не только для вашего ноутбука, но и для любой другой машины, которая проверяет список.

Сторона клиента может быть такой же простой, как

wget -O - "url" | ruby -r yaml -e "YAML.load(STDIN).each { |a, b| \`ln -s \"#{a}\" \"#{b}\" \` }"

Другие советы

Вы можете сделать это, установив файловую систему, используя предохранитель. На мой взгляд, это довольно аккуратная мелочь.

Найдите предохранитель здесь

РЕДАКТИРОВАТЬ: Измените ссылку на то, что вы можете использовать на FUSEFS, который является предохранителем рубиновыми привязками, что вам понадобится, если вы используете Ruby.

Вы можете использовать Puppet, которая основана на Ruby.

Если это только ваш Ноутбук и нет другого клиента, тогда вы можете сделать сервер SSH на свой ноутбук и делать все, что ему нужно. В общем, нет, HTTP -сервер не может сделать что -либо на клиентской машине.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top