在 Windows 主机上使用 sudo 命令通过 plink 执行 ssh

在 Windows 主机上使用 sudo 命令通过 plink 执行 ssh

我有 Windows,我需要通过 SSH 访问 Asterik(Linux 服务器)来执行一个命令。现在我打开 Putty,输入 IP 服务器、端口、用户和密码 SSH,执行 sudo 命令,再次输入密码,然后我就能看到结果了。我想自动执行此操作。因此,我通过 PLINK 创建了一个脚本:

plink -ssh -no-antispoof USER@SERVER -pw PASSWORD -t "echo -e PASSWORD | sudo -S asterisk -rx 'sip show peers';

执行的命令是:sudo asterisk -rx "sip show peers"。结果如下:

[sudo] password for user: sudo: asterisk: command not found

因此,我将下一个脚本的 PASSWORD 更改为 PASSWORD\n:

plink -ssh -no-antispoof USER@SERVER -pw PASSWORD -t "echo -e PASSWORD\n | sudo -S asterisk -rx sip show peers;"

[sudo] password for user: Sorry, try again.

[sudo] password for user:

sudo: 1 incorrect password attempt

因此,我将其改为:

plink -ssh -batch USER@SERVER -pw PASSWORD -m comando.txt

并且 comando.txt 有:

echo -e "PASSWORD" | sudo -S asterisk -rx "sip show peers"

结果是:

[sudo] password for user: sudo: asterisk: command not found

我需要创建脚本/bat 来自动执行命令,这样,单击一次我就能通过 CMD 看到结果。问题是交互式命令 (sudo asterisk) 需要密码。由于公司政策,我无法修改 sudoers 文件。 如何使用 PLINK 或其他软件或解决方案执行命令?

答案1

也许应该

su asterisk -c "/usr/sbin/asterisk -rx 'sip show peers' "

参见 man sudo/man su

答案2

这是你的问题:

    asterisk: command not found
  1. 对于任何类型的自动化:请首先尝试手动登录服务器,确保您尝试运行的命令确实可以运行。
  2. 一旦您可以手动运行它,复制粘贴(修改后的)命令,然后从 plink 尝试它。

对我来说,它似乎表示要么未安装星号,要么您需要指向星号的特定路径(例如,可能是 /usr/bin/asterisk 或 /opt/bin/asterisk 或类似路径才能调用该可执行文件。(或者如上面的评论所说,也许拼写错误?)

相关内容