2012-07-31 3 views
0

로컬 컴퓨터에 쉘 스크립트가 있는데 원격 서버에서 쉘 스크립트를 실행해야합니다. 나는 다음과 같이 몇 가지 단계를 수행했다 :원격 서버에서 로컬 셸 스크립트를 실행하는 방법?

  1. 로컬 컴퓨터와 원격 서버의 쌍으로 된 SSH 키.
  2. ssh [email protected] 'bash - s' < user_add.sh;

나는 오류가 점점 오전 :

standard in must be a tty 
: command not found 
bash: line 4: useradd: command not found 
Usage: /etc/init.d/vsftpd {start|stop|restart|condrestart|status} 
Only root can do that. 
chmod: cannot access `/102/prsuser\r': Permission denied 
mkdir: cannot create directory `/102/prov/\r': Permission denied 
bash: line 8: useradd: command not found 
Only root can do that. 
chmod: cannot access `/102/prov/PROV_LIS_RESP_DIR\r': Permission denied 
chown: cannot access `/102/prov/\r': Permission denied 
bash: line 12: /etc/vsftpd/chroot_list: Permission denied 

루트 로그인이 정상적으로 수행 할 수없는, 우리가 su - command에 의해 일반 사용자 계정에서 전환하여 루트로 로그인 할 수 있습니다.

원격 서버에서 루트로 스크립트를 실행하는 방법과 내 스크립트 (user_add.sh)의 시작 지점에서 루트 계정을 전환하는 데 사용 된 스크립트는 어떻게 될까요?

+0

실행 중 'user_add.sh'와 상호 작용할 것으로 예상됩니까? 때문에'stdin' 이미 리디렉션되었습니다로 작동하지 않습니다. – Thor

답변

0

는 루트 권한이있는 사용자로 명령을 실행할 수 있도록 user_add.sh을 수정할 수 있습니다

su $ROOT_USER -c "command arg1 arg2" 
+0

스크립트가 로컬입니다. 이것은 도움이되지 않습니다. –

+0

실제로'user_add.sh '스크립트가 수정되어야합니다. 로컬 또는 원격 스크립트는 루트 권한이 필요한 명령을 실행하고 있습니다. – aayoubi

0

당신은 대신 스와의 sudo를 사용할 수를 (그리고 당신이 사용자로 사용하는 데 필요한 모든 명령을 정의 sudoers 파일)

루트 계정을 활성화 할 수도 있습니다. 참고로 계정의 이름이 반드시 "root"일 필요는 없지만 실제로는 새 사용자 (whatever)를 만든 다음 passwd 파일을 편집하고 해당 계정에 uid 값 0을 할당 할 수 있습니다.

0

글쎄, 당신이 달성하려고 무엇은, 조금 이상하다,하지만 당신은 그것을 할 수 있습니다 : hostname에서 해석 sudo 내에서 실행됩니다 user_add.sh

ssh [email protected] sudo -S < user_add.sh 

명령은. 사용자 user/etc/sudoershostname (대응 주소는 NOPASSWD)이어야합니다.

명령이 방법으로 실행해야 NOPASSWD 추가 할 수없는 경우 :

(echo PASSWORD; cat user_add.sh) | ssh [email protected] 

대신 PASSWORD 당신이 hostname에서 user의 암호를 작성해야합니다. 당신의 sudo가 자동으로 /sbinPATH에 추가하지 않을 경우

, 수동으로 수행해야합니다

(echo PASSWORD; echo 'PATH=/sbin:/usr/sbin:$PATH'; cat user_add.sh) \ 
| ssh [email protected] 

그리고 마지막 일을. 스크립트에 \r 개의 기호가 있음을 알았습니다 (Windows?에서 편집 됨). 더 나은 제거 :

(echo PASSWORD; echo 'PATH=/sbin:/usr/sbin:$PATH'; cat user_add.sh) \ 
| tr -d '\r' \ 
| ssh [email protected] 
관련 문제