0

如果我 ssh 到 pfSense,我必须选择 8 才能访问 shell,然后我可以以 root 身份运行我的命令。

如果我创建一个新用户,我可以 ssh 直接到 shell,但没有 root 访问权限。

我正在尝试编写一个脚本来让我登录,选择选项 8,然后运行我的命令。

    $rules="rules information is place in this var. 1n is used for new lines"
    ssh admin@192.168.1.1 << EOF
      printf "8\n"
      printf $rules > /home/rules;
    EOF

这失败了,不会让我登录或创建我的文件。

如果我将其更改为:

ssh -tt admin@192.168.1.1 << EOF
  8
  echo -e "$rules" > /home/rules;
  exit
  0
EOF

我登录了,但我的 $rules 值回显到屏幕上,而不是我要创建的新规则文件中。

任何人都建议我如何做到这一点?

更新

我通过使用部分得到了这个工作: printf "rules" > /home/rules唯一的问题是$rules包含一个未显示在结果文件中的变量。

例如:

$rules="rules information is places in this var.\nis used for new lines\n$additional['rules']['local']";

写入文件为:

rules information is places in this var.
is used for new lines
['rules']['local']

$additional之前缺少注释['rules']['local']

有什么方法可以正确包含它吗?我尝试在 $additional 之前添加 \,我尝试更改 var,使其不包含在 " not ' 中,然后更新字符串中的单引号。

每次我最终都会将 $rules 中的每一行回显到远程命令行而不是远程文件。

有任何想法吗 ?谢谢

4

1 回答 1

1

这是我所拥有的:

bash-3.2$ A="coucou" B="a$Aa"; echo  "${B}"
a
bash-3.2$ A="coucou" B="a${A}a"; echo  "${B}"
acoucoua
bash-3.2$

那么,您可以尝试使用大括号{}吗?

有关此答案的更多信息

于 2018-04-24T08:57:54.553 回答