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'
(обратите внимание на одинарные кавычки). Если вы сделаете оба, вы должны увидеть разницу.