我在 .bashrc 文件上有别名,例如;
alias modemreboot="IP=$(/sbin/ip route | awk '/default/ { print $3 }');echo "reboot" | sshpass -p "12345" ssh admin@$IP"
通过命令行重启我的调制解调器。当我输入或复制粘贴到终端时,它可以工作,但作为别名我得到这个错误;
Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh: Could not resolve hostname : Name or service not known
答案1
你的引用搞乱了--正如你通过运行作业所看到的那样set -x
:
$ alias modemreboot="IP=$(/sbin/ip route | awk '/default/ { print $3 }');echo "reboot" | sshpass -p "12345" ssh admin@$IP"
++ /sbin/ip route
++ awk '/default/ { print $3 }'
+ alias 'modemreboot=IP=via;echo reboot | sshpass -p 12345 ssh admin@via'
尝试一下
alias modemreboot='IP=$(/sbin/ip route | awk "/default/ { print \$3 }");echo "reboot" | sshpass -p "12345" ssh admin@$IP'
(尽管 - 除非你的/sbin/ip
与我的不同 - 我认为你可能想要\$4
而不是\$3
)。
您可能需要考虑使用 shell 函数,例如
modemreboot () {
local IP;
IP=$(/sbin/ip route | awk '/default/ { print $3 }')
echo "reboot" | sshpass -p "12345" ssh admin@$IP
}
看