以下のスクリプトでは、aserverとbserverが正しく機能しています。ただし、上記の「cserver」の場合、su - gsxuserp以降は同じユーザーを使用して次の3つのオプションを実行する必要があります。
cd ..
cd random_directory
tail -f file_in_random_directory
何もせずに接続が閉じられるため、-cオプションを使用してこれを実行することはできません。誰かがこれを行う基本的な方法を提案できますか?
echo "Please type one of the following: aserver,bserver,cserver:"
read input
echo "You entered: $input"
case "$input" in
"aserver")
echo "Logging into a. Please enter the passwords when prompted"
ssh -t [email protected] "ssh -t aserver "su - gsxp -c "sqlplus grep_ro/pwd"""
;;
"bserver")
echo "Logging into b. Please enter the passwords when prompted"
ssh -t [email protected] "ssh -t bserver "su - gsxp -c "sqlplus grep_ro/pwd"""
;;
"cserver")
echo "Logging into c. Please enter the passwords when prompted"
ssh -t [email protected] "ssh -t cserver "su - gsxuserp -c "cd """
;;
*)
echo "Incorrect Option entered. Exiting the script"
;;
esac
ベストアンサー1
なぜそれを使用しないのですかsu - gsxuserp -c "tail -f ../random_directory/file_in_random_directory"
?
それぞれが新しいセッションを開始し、単一のコマンドを実行してから閉じるため、複数はsu
意味がありません。その後のものは、以前のディレクトリがどのディレクトリにあるかを覚えておらず、毎回呼び出しスクリプトのディレクトリを継承します。
完全なコマンドは(コメントを引用する他の答えから引用されます)です。
ssh -t [email protected] ssh -t cserver 'su - gsxuserp -c \"tail -f ../random_directory/file_in_random_directory\"'
一連の二重引用符だけでなく、一重引用符と二重引用符(およびエスケープされた二重引用符)の使用に注意してください。