
다음 쉘 스크립트가 있습니다. 하나의 호스트에서는 잘 작동합니다. 두 번째에서는 작동하지 않습니다. 2>&1 << 'EOF' 를 제거하면 두 번째 호스트에서 제대로 작동합니다. 2>&1 << 'EOF'가 무슨 뜻인가요? 한 호스트에서는 제대로 작동하지만 두 번째 호스트에서는 작동하지 않는 이유는 무엇입니까?
감사해요
start () {
case ${1} in
APP1)
ssh -q user@host 2>&1 << ‘EOF’
exit $?
EOF
;;
APP2)
ssh -q user@host 2>&1 << ‘EOF’
exit $?
EOF
;;
}
답변1
문제는 저 밖 어딘가에 있습니다.
서로 다른 두 개의 호스트가 있고 스크립트를 사용하고 있으므로 ssh
먼저 네트워크를 살펴보는 것이 좋습니다. 한 호스트는 대상 호스트에 연결되고 다른 호스트는 연결되지 않을 수 있습니다.
-q
ssh 명령의 키는 ssh가 제공할 수 있는 대부분의 경고 및 진단을 억제하고 2>&1
stderr을 stdout으로 리디렉션하지만 이미 이를 억제했으므로 리디렉션은 의미가 없습니다.
범인은 여기에 없습니다 << 'EOF'
. 적어도 나는 그것이 어떨지 상상할 수 없습니다. 호스트의 쉘 중 하나가 실제로 손상되어 어떻게 해야할지 모르는 경우가 아니면여기 문서인용된 변형에서.
답변2
문제는 SSH 연결 문제와 관련이 있습니다.