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
답변2
gotoserver
$@
모든 매개변수 와 같은 내용을 포함해야 합니다 gotoserver
. 다음과 같이 사용할 수 있습니다.
ssh -o StrictHostKeyChecking=no -l user 10.10.10.10 $@
여기서 $@
모든 매개변수는 gotoserver로 전달되며 ssh
10.10.10.10에 실행된 명령이 됩니다.
또한 여러 명령을 분리하여 차례로 실행할 수 있습니다 ;
. 예를 들면 다음과 같습니다.
echo a ; echo b