suコマンドでcdコマンドを使用するには?

suコマンドでcdコマンドを使用するには?

以下のスクリプトでは、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\"'

一連の二重引用符だけでなく、一重引用符と二重引用符(およびエスケープされた二重引用符)の使用に注意してください。

おすすめ記事