我有一个函数:
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
这可能吗?感谢您的帮助。
最佳答案
您希望扩展发生在客户端,因此您可以在将值传递给 ssh
之前使用双引号对其进行扩展:
# Unsafe version
function obtener_resumen(){
ssh root@${1} "
echo \"grep -iE ${2} ${3}\";
ifconfig;
" > "${4}"
}
但是为了防止命令注入(inject),使用printf %q
:
#Safe version
function obtener_resumen(){
ssh root@${1} "$(printf "%q " echo grep -iE "$2" "$3"); ifconfig" > "$4"
}
关于linux - 将参数传递给远程 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35657875/