SSHを介して1つの別名を実行し、SSHを介して別の別名を実行します。

SSHを介して1つの別名を実行し、SSHを介して別の別名を実行します。

SSHを介して別の別名を実行するSSHを介して別名を実行しようとしています。可能ですか?

私が探していますこれSSHを介したエイリアスの実行に関して、これまでに以下を得ました。

ssh develop -t /bin/bash -ic "gotoserver"

gotoserver次を実行するためのエイリアスです。

ssh -o StrictHostKeyChecking=no -l user 10.10.10.10

すべてがうまくいき、ついにそこに到達しました10.10.10.10。しかし、その中で別のエイリアスを実行したかったので、10.10.10.10次のように試しました。

ssh develop -t /bin/bash -ic "gotoserver -t /bin/bash -ic 'loaddocker'"

しかし、これはうまくいきません。それだけ認識が可能なようですgotoserver。それでも終わりますが、10.10.10.10残りのコマンド(-t /bin/bash -ic 'loaddocker')は無視されるようです。

しかし、入ってdevelop実行すると次のようになります。

gotoserver -t /bin/bash -ic 'loaddocker'

動作し、loaddocker実行されます。

私は何が間違っていましたか?developとで何も変更せずにこれを行う方法はありますか10.10.10.10

ベストアンサー1

エイリアスの代わりに関数を使用してください!

function fnchunk () {
    echo -n function\ ;
    typeset -f ${@}
}

function requote () 
{ 
    if (($#)); then
        local re savedq='#...___+++...#' dblquote='"' singlequote="'" escapedsinglequote="\'" escapeddblquote='\"';
        re="$(printf "${savedq}%s${savedq} " "${@}")";
        re="${re//${dblquote}/${escapeddblquote}}";
        echo "${re//${savedq}/${dblquote}}";
    fi
}

function loadDockerWrapper(){
    echo loaddocker # call loadDocker script not alias
    # or if it was an alias turn it into function here
}

function gotoserver(){
    /usr/bin/ssh -o StrictHostKeyChecking=no -l user 10.10.10.10 -tq "$(fnchunk fnchunk requote gotoserver loadDockerWrapper)" ";" $(requote "${@}")
}

function devCmd(){
    /usr/bin/ssh -tq develop "$(fnchunk fnchunk requote gotoserver loadDockerWrapper)" ";" $(requote "${@}")
}

devCmd gotoserver loadDockerWrapper

おすすめ記事