2016-02-26 122 views
0

我有一个函数:传递参数给远程SSH

function obtener_resumen(){ 
ssh [email protected]${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

你想扩张发生在客户端,这样你就可以,然后再将其传递给ssh使用双引号来扩大值:

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

但要防止命令注入,使用printf %q

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