将参数传递给远程SSH

时间:2016-02-26 17:19:19

标签: linux bash ssh grep remote-access

我有一个功能:

function obtener_resumen(){
 ssh  root@${1} '
   echo "grep -iE ${2} ${3}";
   ifconfig;
 ' > "${4}"
}

我称之为:

obtener_resumen "MY_IP" "PATRON" "/MY_FILE.txt" "/demo.log"

当我打开demo.log时,我看到:

grep -iE

当我需要grep -iE PATRON /MY_FILE.txt

这可能吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您希望在客户端进行扩展,因此您可以在将值传递到ssh之前使用双引号来扩展:

# Unsafe version
function obtener_resumen(){
 ssh  root@${1} "
   echo \"grep -iE ${2} ${3}\";
   ifconfig;
  " > "${4}"
}

但是为了防止命令注入,请使用printf %q

#Safe version
function obtener_resumen(){
 ssh  root@${1} "$(printf "%q " echo grep -iE "$2" "$3"); ifconfig" > "$4"
}