퍼티 수동 세션과 Plink 세션이 다르게 동작


0

안녕, 나는 승리 PC에서 퍼티를 사용하여 원격 Linux 서버에 연결하고 특정 명령을 실행하고 있습니다. 다음과 같이 plink를 사용하여 작업을 자동화하고 싶습니다.

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

putty / plink를 통해 "ls; cmd1; cmd2"명령을 수동으로 수행하면 제대로 작동합니다. 그러나 동일한 thorugh cmd.ext를 수행하고 위의 plink 명령을 수행하면 "bash cmd1 not found"가 나타납니다. 그러나 ls 명령은 정상적으로 작동합니다.

왜 이런 일이 발생합니까? 추신 : cmd1은 내장 리눅스 명령이 아닙니다. 내가 생각하는 서버를 위해 특별히 만들어졌습니다.

이 작업을 어떻게합니까?

답변:


0

bash가 'command not found'에 대해 불평하면 이는에서 명령 cmd1을 찾을 수 없음을 의미합니다 $PATH. 따라서 경로 cmd1가 항상에 있는지 확인 $PATH하거나 다음에 대한 전체 경로 이름을 지정해야합니다 cmd1.

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

which cmd1대화식 쉘 (퍼티를 통한 것)에서 전체 경로 이름을 찾을 수 있습니다 .

~/.bashrc또는에 PATH ~/.profile, 즉 홈 디렉토리의 .bashrc 또는 .profile을 설정할 수 있습니다 .

echo $PATH퍼티 세션에서 또는 plink serveradress -l userid -pwd pass -batch 'echo $PATH'작은 따옴표로 PATH를 확인할 수 있습니다 . 둘 다하면 차이가 나타납니다.


내 login_session = on 동안 실행되는 bashrc 등과 같은 스크립트의 경로를 모릅니다. plink ..를 통해 "로그인"유형 세션을 시작할 수있는 방법이 있습니까? 그래서 자동으로 해당 스크립트를 실행하며 경로를 모르더라도 cmd1이 작동합니다. 또는 login_session = on 동안 실행되는 스크립트의 모든 경로를 알 수있는 방법이 있습니다. 추신-이들 중 어느 것도 내 집에 없습니다
Abhi

답변에 추가 정보를 추가했습니다. 그것이 당신에게 충분한 지 확인하십시오.
Ljm Dullaart

환상적인. 하나를 제외하고 모든 명령은 이제 비 대화식 세션에서 작동합니다! 작동하지 않는 하나의 cmd에 대한 것은 cmd가 주 .sh 파일에서 source-d 인 두 번째 .sh에 설정되어 있다는 것입니다. 또한 .I에서 수동으로 실제 .sh를 소스 경로로 구성 할 수 있습니다 기본 .sh 파일에서 ..하지만이 경로는 동적 이므로이 옵션을 선호하지 않습니다-정기적으로 변경됩니다 : /. 또한 비 대화식 / 비 로그인 세션에서 문제가되는 다른 주요 .sh / alias-ing에서 .sh 파일을 이러한 간접 지정 소싱 할 수 있습니까?
Abhi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.