Получение ошибки с: командами pbsu и pbrun через Plink (команда не найдена)

Я делаю автоматизацию для запуска команд через Plink. Ниже приведен обязательный шаг для запуска команды в моей среде:

  1. Login to unix machine:
    • host: myhost
    • пользователь/пароль: myuser/Mypass
  2. Используйте команду: pbsu - uatwrk1
    (Или команду: pbrun –u uatwrk1 pbksh)
    -> она перенаправит на другую машину и некоторые команды будут выполняться там
  3. Запустите несколько команд

******Проблема*******

(I) Когда я выполняю приведенную ниже командную строку Plink в CMD, я получаю сообщение об ошибке:
Содержимое script.txt:

pwd  
pbsu - uatwrk1  
pwd  
runcommand.ksh

plink -ssh myuser@myhost -pw Mypass -m "C:\script.txt" > "C:\log.txt"  

Ошибка: «sh: pbrun: команда не найдена»

(II) Но он работает с командой за командой:

cmd>plink -ssh myuser@myhost -pw Mypass  
$pwd  
$pbsu - uatwrk1  
$pwd  
$runcommand.ksh  

Пожалуйста, помогите выяснить, почему команда pbrun не удалась на (I), хотя она работала на (II)?
Мне нужно (I) работает, поскольку она предоставляет журнал захвата для дальнейшей проверки в моем автоматизированном приложении (с использованием VBA).

Большое спасибо за любую помощь!


person Phuc Nguyen    schedule 13.01.2014    source источник


Ответы (1)


Это возможно, если в интерактивном сеансе (II) у вас другая среда, чем в пакетном сеансе (I). Вы должны проверить, какой PATH и текущий каталог у вас есть в обоих случаях.

person Igor Chubin    schedule 13.01.2014
comment
Спасибо Игорь. Я попытался указать в сценарии полный путь к команде pbsu, и это сработало. Кажется, есть разница при запуске команд в файле сценария и запуске команды за командой (вручную) в интерактивном сеансе с Plink? Как и в случае с интерактивным типом, мне не нужно указывать полный путь к команде pbsu. Можете ли вы помочь мне очистить его. - person Phuc Nguyen; 22.01.2014
comment
@PhucNguyen: возможно, для интерактивных сеансов у вас есть другой PATH - person Igor Chubin; 22.01.2014
comment
Я не понял вашу идею, но для интерактивного сеанса отлично работает с командой: ($pbsu - uatwrk1) , для командной строки с Plink - команда должна быть: (/usr/local/bin/pbsu - uatwrk1). В противном случае я получу ошибку: команда не найдена. Я также получаю ту же проблему с другими командами, такими как sh - person Phuc Nguyen; 22.01.2014
comment
@PhucNguyen: Можете ли вы сравнить 'echo $PATH' в обоих режимах (интерактивный/пакетный)? - person Igor Chubin; 22.01.2014
comment
Привет, Игорь, ПУТЬ в интерактивном режиме — это /usr/local/bin:/bin:/usr/bin, но ПУТЬ в пакетном режиме — это длинный список. Я не уверен, почему они разные. Есть ли способ сделать PATH в пакетном сеансе таким же, как PATH в интерактивном режиме? - person Phuc Nguyen; 23.01.2014
comment
@PhucNguyen: Не могли бы вы проверить свой ~/.bashrc? Может быть, там указан PATH? - person Igor Chubin; 23.01.2014
comment
Спасибо, Игорь, я думаю, вы ведете меня по правильному пути. Моя машина использует файл .profile (для ksh). Я погуглил и попробовал инструкцию (команда $ssh user@remotehost . $HOME/.profile; эхо $PATH). Затем я получил ошибку: stty :: не машинка. Помогите пожалуйста с новым заданием. Спасибо. - person Phuc Nguyen; 23.01.2014
comment
@PhucNguyen: вы должны прочитать man ksh об интерактивном/неинтерактивном запуске и о его сценариях запуска. - person Igor Chubin; 23.01.2014