$PATH
— это (обычно — если только вы не переопределили его, но это сломало бы кучу вещей) список каталогов, разделенных двоеточиями. find
принимает список каталогов, разделенных пробелами в командной строке:
find /path/to/dir1 /path/to/dir2 -name "$FILE.log"
Также обратите внимание, что одинарные кавычки препятствуют оценке переменных оболочкой, поэтому вам, вероятно, понадобятся двойные кавычки вокруг $FILE.log.
, как указано выше.
Вы можете преобразовать $PATH
в список, разделенный пробелами, несколькими способами, например:
echo $PATH | sed 's/:/ /g'
и использовать подстановку команд, чтобы получить список в вашей команде поиска:
find $(echo $PATH | sed 's/:/ /g') -name "$FILE.log"
Когда вы вручную выполняете команду ssh, я предполагаю, что вы настроили ssh без пароля, а ~user/.ssh имеет необходимые ключи. При запуске через веб-страницу ssh выполняется как пользователь apache (или пользователь httpd), а ~apache/.ssh используется для ключей. У этого пользователя нет ssh без пароля, поэтому «Разрешение запрещено».
Вы просматриваете веб-страницу из 192.168.1.50, следовательно, это показано в ошибке.log и ошибка заключается в том, что ssh (работает на 192.168.1.20) не смог подключиться к 192.168.1.10, что правильно.
Различные способы исправить это :
- Дайте sudo доступ к apache, так что apache может выполнить ssh как ваш собственный пользователь:что-то вроде "sudo -u me -c 'ssh 192.168.1.10 'script1.sh'", где apache будет использовать sudo для переключения на вас и выполнения ssh.
- Сделайте apache с домашним каталогом на обоих хостах и настройте ssh без пароля для пользователя apache, и выполните все как apache.
Если вы беспокоитесь о проблемах безопасности, вам следует искать альтернативные решения, такие как веб-службы.