Назад | Перейти на главную страницу

Как вызывать сценарии Tcl из PHP

В настоящее время я хотел бы вызвать скрипты языка команд инструмента, которые находятся на сервере A.

Когда пользователь просматривает веб-сайт, размещенный на сервере B. Когда пользователь нажимает кнопку, например, я хотел бы, чтобы файл php выполнял сценарии Tcl, расположенные на сервере B.

Как я могу это сделать?

Заранее спасибо.

Использовать Оператор выполнения PHP (обратите внимание, что вы должны быть чрезвычайно осторожно - по возможности ограничьтесь допустимыми сценариями вместо того, чтобы позволять пользователю указывать произвольные команды в переменной GET или POST).

Пример:

http://myserver.com/php_scriptname.php?tcl_call=asdf.tcl

<?php

if ( !file_exists("/path/to/tclsh") ) {
  die('unable to access TCL interpreter - check user permissions for UID ' . getmyuid() );
}

switch ( $_GET['tcl_call'] ) {

  case 'asdf.tcl':
    `/path/to/tclsh /path/to/asdf.tcl`
  break;

  default:
    die('invalid script called');
  break;

}

?>

Редактировать:

В настоящее время ваш вопрос гласит:

Когда пользователь просматривает веб-сайт, размещенный на сервере B. Когда пользователь нажимает кнопку, например, я хотел бы, чтобы файл php выполнял сценарии Tcl, расположенные на сервере B.

... но если вы хотите вызвать сценарий на сервере "A", вы можете настроить SSH-ключ а затем вызовите SSH из вашего скрипта на сервере «B» - например:

  case 'asdf.tcl':
    `ssh phpuser@servera '/servera/path/to/tclsh /servera/path/to/asdf.tcl'`
  break;

(Одинарные кавычки и обратные кавычки)

Обратите внимание, что вы можете сохранить то, что возвращается из оператора выполнения, в переменной или повторить его - вы можете захотеть повторить возвращаемое значение и включить 2>&1 в конце каждой команды, которую вы запускаете для отладки.