SSH 명령이 올바르게 종료되지 않음 [닫기]

SSH 명령이 올바르게 종료되지 않음 [닫기]

SSH를 통해 원격 서버로 반복하여 명령을 실행하는 스크립트를 작성했는데 마지막 서버에서 실행한 후 정지됩니다. 여기 내 루프 스크립트가 있습니다 -

cat server | while read serName
        do
                cat cmmnds| while read line
                do
                 result=`ssh -f $serName  $line`
                 echo -n ",$result" >> test.csv
        done
echo " " >> test.csv
done

이것이 내가 잘못되어 종료하려면 +C를 제어해야 하는 방법입니다.

Cannot fork into background without a command to execute.
ssh: illegal option -- d

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
Cannot fork into background without a command to execute.
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Cannot fork into background without a command to execute.

어떤 단서가 있나요?

답변1

ssh. pssh​이 U&L Q&A의 질문은 다음과 같습니다.여러 호스트에서 명령을 실행하지만 성공한 경우에만 명령을 인쇄하시겠습니까?.

귀하의 경우 아래와 같이 server& 명령 파일을 직접 넣을 수 있습니다.pssh

$ pssh -h server -i -I < commands.txt

여기서는 다음 두 파일을 만들었습니다.

$ cat servers
skinner
mulder

$ cat commands.txt
date
echo 'hi'

이제 실행하면 다음과 같습니다.

$ pssh -O ForwardX11=no -h servers -i -I < commands.txt
[1] 03:10:03 [SUCCESS] skinner
Fri Jul 17 03:10:03 EDT 2015
hi
[2] 03:10:04 [SUCCESS] mulder
Fri Jul 17 03:06:41 EDT 2015
hi

위의 출력을 다음과 같이 캡처할 수 있습니다.

$ .... | tee some_log_file.txt

-i아니면 스위치를 꺼내서 pssh각 서버에 대해 별도의 로그 파일을 생성하도록 할 수도 있습니다 -o <dir>.

$ pssh -O ForwardX11=no -h servers -o ~/somedir -I < commands.txt
[1] 03:13:04 [SUCCESS] skinner
[2] 03:13:04 [SUCCESS] mulder

이제 결과를 확인하세요.

$ ls somedir/
mulder  skinner

$ cat somedir/*
Fri Jul 17 03:09:41 EDT 2015
hi
Fri Jul 17 03:13:03 EDT 2015

인용하다

관련 정보