#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...');
});