Привет, я подключаюсь к удаленному серверу Linux, используя шпаклевку на компьютере-победителе, и выполняю там определенные команды. Я хочу автоматизировать задачи с помощью plink следующим образом:

plink serveradress -l userid -pwd pass -batch "ls;cmd1"

Если я выполняю команды "ls; cmd1; cmd2" вручную через putty/plink, то все работает нормально. Однако, если я делаю то же самое torhgh cmd.ext и выше команды plink, я получаю "bash cmd1 not found". Однако команда ls работает нормально.

Почему это происходит? PS: cmd1 не является встроенной командой linux. Полагаю, он создан специально для сервера.

Как мне сделать эту работу?

1 ответ1

0

Когда bash жалуется на «команда не найдена», это означает, что команда cmd1 не может быть найдена в $PATH . Так что либо вы должны убедиться, что путь для cmd1 всегда находится в $PATH , либо вы должны указать полное имя пути для cmd1:

plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1"

Вы можете найти тот полный путь, с which cmd1 в вашей интерактивной оболочке (тот, что через putty).

Вы можете установить PATH в ~/.bashrc или ~/.profile , то есть .bashrc или .profile в вашем домашнем каталоге.

Вы можете проверить PATH с помощью echo $PATH в сеансе замазки или с помощью plink serveradress -l userid -pwd pass -batch 'echo $PATH' (обратите внимание на одинарные кавычки). Если вы делаете оба, вы должны увидеть разницу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .