linux - 将参数传递给远程 SSH

标签 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

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

最佳答案

您希望扩展发生在客户端,因此您可以在将值传递给 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/

相关文章:

linux - 如何删除 DNS、bind9 中的查询 "NULL"和 "WKS"?

ios - iPhone 上的 Http 直播延迟

linux - 生成文件程序

linux - 尝试在 bash 中分割一个大字符串

linux - 为什么这个文件没有被删除?

bash - 从 shell 脚本逐行读取文件

php - 从病毒中清除 php 文件

Java SSH 从另一台远程机器连接到远程机器

ssh - Coldfusion 10 CFFTP SFTP 问题算法协商失败

mysql - 主用户无法在 SSH 中编辑或运行脚本、cronfile