LINUX.ORG.RU

Сообщения Pablitto

 

Как произвести изменение и выполнение скрипта 'на лету' (без сохранения изменений на ФС)

Здравствуйте

Есть устройство Ubiquiti Bullet M5 с системой AirOS (я предполагаю что на базе openWRT).

XM.v5.5.8# uname -a
Linux Bullet M5 2.6.32.54 #1 Wed Feb 5 18:25:32 EET 2014 mips unknown
Мне необходимо выполнить cgi скрипт через SSH, например, этот (/usr/www/survey.json.cgi), внутри он содержит:
XM.v5.5.8# cat /usr/www/survey.json.cgi
#!/sbin/cgi
<?
include("lib/settings.inc");
if (strlen($iface) == 0) {
        $iface = $wlan_iface;
}
PassThru("iwlist " + EscapeShellCmd($iface) + " scan | " + 
$cmd_scanparser);
>
При этом заменить $wlan_iface на другое значение, например lo. И при этом не сохранять изменённый скрипт. Т.е всё выполнить 'на лету': взять содержимое оригинального скрипта, подправить и выполнить.

Пока что я действую так, на примере данного скрипта:

1) Копирую скрипт в /tmp:

XM.v5.5.8# cp /usr/www/survey.json.cgi /tmp/pseudo_survey.json.cgi
2) Заменяю значения и также приходится менять 'include' пути:
XM.v5.5.8# sed -i 's%lib/settings.inc%/usr/www/lib/settings.inc%g' /tmp/pseudo_survey.json.cgi
XM.v5.5.8# sed -i 's%$wlan_iface%lo%g' /tmp/pseudo_survey.json.cgi
3) Запускаю изменённый скрипт:
XM.v5.5.8# /tmp/pseudo_survey.json.cgi

Мне же необходимо, чтобы без сохранения в /tmp.

1) Я пробовал сохранять всё в переменную:

IFS=""
script=$(sed 's%$wlan_iface%lo%g' /usr/www/survey.json.cgi)
2) И затем как нибудь запустить результат по типу:
/sbin/cgi $script 
(при этом выводит Segmentation fault)

3)Также пытался:

sed 's%$wlan_iface%lo%g' /usr/www/survey.json.cgi | cgi
(при этом выводит: <html><head><title>PHP/FI</title></head><body><h1>PHP/FI Version 2.0.1<....) Но это не то, что ожидается...

Вообщем не могу сообразить как 'на лету' изменить и запустить cgi (без сохранения изменений на файловую систему). Может быть подскажете чего-нибудь (если вообще такое возможно) ?

C Уважением Павел...

 

Pablitto
()

RSS подписка на новые темы