2016-07-30 5 views
0

다음과 같은 "nvidia-smi"를 실행하여 원격 서버에 SSH가있는 스크립트를 프로그래밍하고 GPU 서버의 상태를 얻었습니다. 스크립트의 설명과 목적 이었지만 그 질문은 제가 실행합니다. 이 "루트"다른 서버에 비밀 번호를 할 수 있지만 사용자가 할 수 없다, 내가 어떻게 스크립트를 실행하고 상태를 얻을 수 있도록 스크립트를 프로그래밍 할 수 있습니까? 물론 원격 서버에 암호를 입력하지 않고도 모든 인증을 사용할 수 있습니까? SSH에서 원격 서버 배시 프로그래밍

#!/bin/bash 

HOSTS="gpuserver01\ngpuserver02" 
SCRIPTS="nvidia-smi" 

echo -e "which GPU server do you want to check?\n$HOSTS\n"-----------------"" 
echo "Please Enter Numebr of GPU Server" 

read ans 

#for HOSTNAME in $ans ; do 

if [ $ans = '1' ]; then 
HOSTNAME="gpuserver01" 
ssh ${HOSTNAME} "${SCRIPTS}" 
else 

HOSTNAME="gpuserver02" 
ssh ${HOSTNAME} "${SCRIPTS}" 
fi 

#done 

감사합니다 : 여기

는 스크립트입니다.

+0

참고 말할 경우 : 항등 연산자는 하나의'='이다; bash는 유감스럽게도'=='을 받아 들인다.하지만 다른 쉘에서는 깨진다. '=='비준수 스크립트를 전파하지 마십시오. 감사. – Jens

+0

고마워요, 주목 받고 방금 고쳤습니다. – Ajko

답변

0
  1. 일반 사용자를 원격 호스트 (예 : gpuuser01)에 추가하십시오.
  2. 해당 사용자의 SSH 키를 만듭니다. [1] 그런 다음 암호없이 gpuuser01에 로그인 할 수 있는지 확인하십시오.
  3. setuid 플래그 [2]로 원격 호스트 (예 : gpuserver01)에 새 스크립트를 작성하면 nvidia-smi가 실행됩니다.
  4. 이제 원격 호스트에 연결하여 루트 암호없이 스크립트를 실행할 수 있습니다.
  5. 문제의 스크립트를 다시 작성하십시오.

[1] https://kb.iu.edu/d/aews

[2] http://www.cyberciti.biz/faq/unix-bsd-linux-setuid-file/

+0

답변 해 주셔서 감사합니다. 여기에 사용자가 로그인 노드에 로그인하고 그들이 GPU 서버의 상태를 볼 수있는 스크립트를 실행하여 서버에 SSH하지 않고, 스크립트를 실행하여 사용자와 비슷한 방식으로 원격 서버에 일부를 가져 와서 가져옵니다. 위로 상태. – Ajko

+0

스크립트를 로그인 쉘로 설정할 수 있습니다. 그래서 그들은 bash shell을 보지는 못하지만 계정에 로그인 할 때 앱의 출력을 보게됩니다. – Adam

1

다른 사용자가 루트 권한으로 실행하는 당신은 당신의 스크립트에 권한을 부여 할 수 있습니다.

run visudo, 아래 추가;

Cmnd_Alias  CUSTOM_CMD=/path/to/script/myscript.sh 
myUser1   ALL = (root) NOPASSWD:CUSTOM_CMD 

다른 사용자가 동일한 group.Let가 otherUsers

Cmnd_Alias  CUSTOM_CMD=/path/to/script/myscript.sh 
%otherUsers   ALL = (root) NOPASSWD:CUSTOM_CMD 
+0

후속 질문이 있습니다. 스크립트를 실행하는 사람들이 cat (chmod 711)을 사용할 수 없도록 스크립트의 내용을 숨길 수있는 방법이 있습니까? 어쨌든 스크립트 사용자가 콘솔 액세스를 얻기 위해 원격 서버에 ssh에이 스크립트를 사용할 수 있습니까? OP는 사용자가 다른 대답에 대한 자신의 의견에 따라 ssh를 얻는 것을 원하지 않습니다. (루트로서의 ssh는 아마 엄청난 재앙이다). –

+0

예, chmod 711이 작동합니다. 스크립트에 취약점이 없으면 사용자는 액세스하지 못합니다. – sozkul