linux命令生成IP时,通过SSH登录服务器后无法执行命令

大卫·格温(David Gwynne)

如果我直接使用ssh ssh [email protected],则服务器将正常运行,并且我可以在注销之前执行任意数量的命令。

服务器IP地址与我的网络设置中定义的IP地址非常相似,但是最后一个八位位组已切换。以下命令从中读取ifconfig并生成正确的IP地址。

ifconfig Netcon | grep "inet " | printf `awk '{ print $2 }'` | tail -c 1 | ssh -tt [email protected].`tr 12 21`

SSH提示输入服务器密码并登录,并在提示下显示新的主机名。但是,我输入的任何内容都不会执行。

Last login: Fri Feb 28 09:07:38 2020 from 192.168.13.2
[email protected]:~$ ping google.com


cd
asdasdwjawdi

如果我-tt从SSH呼叫中删除,则登录失败并显示:

tput: No value for $TERM and no -T specified
罗伊马

您正在将标准输入ssh命令以及生成最终八位位组所需的处理混合在一起本质上,您的命令处于这种状态,

echo 1.2.3.4 | ssh -tt user@`tr 12 21`

由此,我希望您能看到tr正在从echo命令(您的管道)接收输入,因此未连接到终端。此外,ssh还在尝试从管道读取其输入。

我想你可能想要的是

ip=$(ifconfig eth0 | awk '/inet / { split($2, ip, /\./); printf "%d.%d.%d.2\n", ip[1], ip[2], ip[3] }')
ssh "user@$ip"

或在没有临时变量的一行上,

ssh "user@$(ifconfig eth0 | awk '/inet / { split($2, ip, /\./); printf "%d.%d.%d.2\n", ip[1], ip[2], ip[3] }')"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章