2013-11-14 2 views
2

원격 서버에서 사용자 정의 명령을 실행해야합니다. 그래서 나는 다음과 같이한다. 그것은 등등 crontab -l, ls, date +%s, 많은 명령에 대해 작동합니다 ... 그러나, 그것은 ip addr일부 명령이 ssh (쉘)를 통해 원격 서버에서 wroking하지 않습니다.

작동하지 않는 경우 잘 작동 ip addr 그 서버 내부 I 실제로 ssh를. 하지만 ssh를 사용하여 실행하면 문제가되지 않습니다.

이것은 어떻게 실행하나요?

$ sshpass -p myPassword ssh -q [email protected] 'ip addr' > $PWD/tmp 
$ cat $PWD/tmp 

다시 말해서, 이것은 지금까지 시도한 모든 명령에 대해 ip addr을 제외하고 작동합니다. 그것은 다음과 같은 출력 그래서

bash: ip: command not found 

궁금 왜 한을 제공 ip addr를 들어 내가 뭘 아무 잘못이 있다면 .... sugges는 rsync 또는 기타를 사용하지

또한

, 마십시오 nondefault linux 명령은 내가 가지고있는 환경에 그것들이 없기 때문에 설치 권한이 없다.

이는 비 대화식 SSH 세션이 다른 것들 사이에 당신의 PATH 변수를 설정하는 것입니다 로그인 프로파일을 소스하지 않기 때문에 발생 사전

답변

2

에 감사드립니다.

기본 경로는 ip 명령의 일반적인 위치 인 /sbin을 포함하지 않습니다.

+0

내가보기 ... 그래서 내가 ssh를 통해 명령을 실행할 때 종류가 "제한된"액세스 권한을 갖고 있다고 알려주고 있습니까? 또한이 문제를 해결할 방법이 있습니까? 아니면 정말 ssh를 통해 실행하고 싶은 명령에 의존합니다. – Masster

+1

액세스가 제한적이지는 않습니다. 대화 형이 아닌 방식으로 실행 중이므로 직접 작업해야 할 수도 있습니다. ip 명령에 문제가있는 경우,이 경우 문제를 해결할 명령을'PATH =/sbin :/usr/sbin : $ PATH ip addr' 명령으로 만들 수 있습니다. ssh를 통해 하나 이상의 명령을 수행하는 것은 scp를 사용하여 원격으로 복사 한 다음 ssh를 통해 명령을 호출함으로써 더 잘 수행 될 수 있습니다. 그렇게하면 PATH를 스크립트에 설정하는 행을 추가 할 수 있으므로 한 번만 수행하십시오. – Petesh

+0

알겠습니다. 사용자가 실행하고 싶은 것을 모르기 때문에 모든 명령 앞에'PATH =/sbin :/usr/sbin : $ PATH'을 넣을 수 있습니까? 사용자 명령이'$ myCommand'에 저장되어 있다고 가정 해 봅시다. 나는''sshpass -p mypass ssh [email protected] 'PATH =/sbin :/usr/sbin : $ PATH $ myCommand'''을 – Masster

관련 문제