안녕하세요. Win PC에서 퍼티를 사용하여 원격 Linux 서버에 연결하고 거기에서 특정 명령을 실행하고 있습니다. 다음과 같이 plink를 사용하여 작업을 자동화하고 싶습니다.
plink serveradress -l userid -pwd pass -batch "ls;cmd1"
putty/plink를 통해 수동으로 "ls;cmd1;cmd2" 명령을 수행하면 제대로 작동합니다. 그러나 cmd.ext 및 plink 명령 위에서 동일한 작업을 수행하면 "bash cmd1을 찾을 수 없습니다"라는 메시지가 표시됩니다. 그러나 ls 명령은 제대로 작동합니다.
왜 이런 일이 발생합니까? PS: cmd1은 내장된 Linux 명령이 아닙니다. 내가 생각하는 서버를 위해 특별히 제작되었습니다.
이 작업을 어떻게 수행합니까?
답변1
cmd1
bash가 '명령을 찾을 수 없음'에 대해 불평하는 경우 이는 해당 명령을 $PATH
. 따라서 에 대한 경로가 cmd1
항상 에 있는지 확인 $PATH
하거나 에 대한 전체 경로 이름을 지정해야 합니다 cmd1
.
plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1"
which cmd1
대화형 셸(퍼티를 통한 경로)에서 전체 경로 이름을 찾을 수 있습니다 .
~/.bashrc
또는 ~/.profile
홈 디렉터리의 .bashrc 또는 .profile 에서 PATH를 설정할 수 있습니다 .
echo $PATH
퍼티 세션에서 또는 plink serveradress -l userid -pwd pass -batch 'echo $PATH'
(작은따옴표 참고)을 사용 하여 PATH를 확인할 수 있습니다 . 두 가지를 모두 수행하면 차이가 나타납니다.