сценарии оболочки и jQuery

#jquery #ajax #shell

#jquery #ajax #оболочка

Вопрос:

Я хочу выполнить команду Linux, которая возвращает текущего пользователя, вошедшего в систему в Linux.

Используя jQuery и ajax, передаем эту команду PHP, который получит и выполнит эту команду с помощью exec() функции. Значение должно быть сохранено и возвращено.

После возврата jquery ajax должен вернуть его к содержимому тега span.

Как этого можно достичь?

Комментарии:

1. Что вы подразумеваете под «текущим» пользователем, вошедшим в систему? В систему может войти 50 пользователей, а может и ни одного. Если вы говорите о пользователе, который запускает процесс Apache: это определено в файле конфигурации Apache, и обычно он никогда не меняется, поэтому вам не нужно прилагать столько усилий, чтобы определить это.

2. хороший момент … но это для изучения purposes….no практическая сторона этого

Ответ №1:

Используйте .load() . Что-то вроде этого:

JavaScript

 $('#my-span-id').load('/path/to/page.php');
  

PHP

 <?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
echo exec('whoami');
?>
  

Комментарии:

1. Если вы используете Apache, whoami обязательно отобразятся ‘www-data’, которые являются пользователем, который управляет Apache по умолчанию. who команда вернет зарегистрированных пользователей и who -a предоставит дополнительную информацию.

2. Это справедливое замечание; я больше стремился к грубому скелету, а не к точному коду для использования (я никогда не писал ни одной строки PHP вне Stack Overflow).

3. должен ли я создавать отдельный php-файл для этого или я могу использовать его с моим существующим файлом (который используется для запуска команд Linux и возврата выходных данных)

4. Вы можете использовать существующую страницу… Измените AJAX на page.php?command=who — затем в PHP проверьте, является ли $_GET[‘command’]==»who» { exec(); }

5. …или просто используйте отдельную страницу PHP. На самом деле это не имеет значения.

Ответ №2:

В этом javascript примере выполняется tail команда с использованием node.js

 #!/usr/bin/env node

var readline = require('readline');
var cp = require('child_process');
var tail = cp.spawn('tail', ['-500', 'mylogfile.log']);
var lineReader = readline.createInterface(tail.stdout, tail.stdin);

lineReader.on('line', function(line) {
    console.log('Line: '   line);
});

tail.on('close', function(code, signal) {
    console.log('ls finished...');
});
  

Справочное руководство