2012-02-23 5 views
1

Пару месяцев назад я создал форму в html/php, которая будет использоваться для ввода информации о новой виртуальной машине.Запустить рубиновый скрипт из HTML-формы

Я также работал над простым рубиновым скриптом, который найдет новый IP-адрес для новой виртуальной машины.

Эти два проекта не были связаны, но теперь я хотел бы, чтобы это было .., но мне тяжело. Я хотел бы сделать, чтобы запустить ruby-скрипт с информацией, предоставленной пользователем в веб-форме.

Допустим, пользователь вводит новое имя виртуальной машины (vm1) и некоторые другие вещи, такие как его идентификатор vlan (1). Я хотел бы иметь возможность запускать скрипт с правильными параметрами (./script.rb --add vm1 --vlanid 1 --...). Я попытался найти простой способ сделать это, но этого не удалось. Я установил пассажира, но я как бы потерял его, и кажется, что это слишком сложно установить, что только делать то, что я хочу.

Спасибо, ребята!

+2

мог бы хотеть быть осторожным со случайной формой вводом и запуском сценария с помощью какого-то системного вызова ... форма ввода может быть что угодно ... вроде как что-то вроде невинного, как вызов 'rm' вашей системы. :( – summea

+0

Поскольку это приложение останется только внутри компании, я думаю, что с этим все в порядке. Но все-таки вы правы, я об этом не думал. – Cocotton

+0

Используете ли вы какие-либо рамки, такие как Rails или Sinatra ? (Просто потому, что вы имеете дело с формами ...) – summea

ответ

2

Вы можете сделать это с Exec():

<?php 
// TODO: Security checks! 
exec("./script.rb --arg1 $arg1 --arg2 $arg2 &"); 
?> 

Другой способ сделать это, это добавить веб-интерфейс для вашего скрипта Ruby. Большой камень для очень простых веб-интерфейсов Sinatra, вы можете просто определить базовый обработчик:

require 'rubygems' 
require 'sinatra' 

get "/" do 
    # do what you need to do, all the GET arguments are in the params Hash 
end 
+0

Я пытаюсь сделать sinitra. Я попытаюсь создать с ним веб-форму. – Cocotton

+0

Да, Синатра это будет! – Cocotton

1

Пока вы уверены формы ввода (как указано в комментарии от ранее :)

Вы можете просто хотите посмотреть в использовании ту форму POST данных (как в этой статье:http://biodegradablegeek.com/2008/04/how-to-post-form-data-using-ruby/).

И затем попробуйте запустить вызов system (like this) (или execlike this,) на ваш виртуальный скрипт.

Смежные вопросы