Ручной сеанс Putty и сеанс Plink ведут себя по-разному

Ручной сеанс Putty и сеанс Plink ведут себя по-разному

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

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

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

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

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

решение1

Когда 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в сеансе putty или с помощью plink serveradress -l userid -pwd pass -batch 'echo $PATH'(обратите внимание на одинарные кавычки). Если вы сделаете оба, вы должны увидеть разницу.

Связанный контент