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