使用shell打开telnet并传递命令

时间:2016-11-07 09:59:07

标签: linux bash shell guile

我是linux和shell脚本的新手。我想连接到localhost并进行交互。

 #! /bin/bash
 (exec /opt/scripts/run_server.sh)

当我执行此bash脚本时,它开始侦听端口。

Listening on port xxxxx

现在我想发出这个命令" telnet localhost xxxxx" 我试过这样的事情:

#! /bin/bash
(exec /opt/opencog/scripts/run_server.sh)&&
telnet localhost xxxxx

它还在监听端口。但我认为第二个命令没有运行。我希望另一个窗口显示它是这样连接的。

vishnu@xps15:~$ telnet localhost xxxx
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
server> 

我将这些作为脚本执行的原因是,在服务器中自动执行某些过程,我需要通过发出某些命令来执行某些过程,这样就可以实现这样的过程" scm" "解析"等......

vishnu@xps15:~$ telnet localhost xxxx
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
server>scm
Entering scheme shell; use ^D or a single . on a line by itself to exit.
guile> (parse "i eat apple")

我有很多文字要来了。手动我不能为每个句子发出这个解析命令。所以我想自动化。所以我需要编写一个脚本来连接服务器并进行交互。

任何指导方针。最后如何与这个guile shell交互/发送命令?

2 个答案:

答案 0 :(得分:2)

以相同或不同的用户身份登录linux服务器并运行某些命令或.sh脚本(对于提交后挂钩或cron作业非常有用)的一种方法是使用名为 sshpass 的程序例如,cron job命令或svn post-commit钩子看起来像这样:

/usr/bin/sshpass -p 'password' /usr/bin/ssh 
-o StrictHostKeyChecking=no  -q user@localhost 'any command'

只需将密码替换为您的密码,将用户替换为您的用户,并输入您需要以该特定用户身份运行的命令...

要在ubuntu上安装sshpass,只需输入

即可
apt-get install sshpass

或在CentOs上

yum install sshpass

答案 1 :(得分:0)

我用netcat(nc)命令解决了这个问题。

  $ echo "command1\ncommand2\n" | nc localhost xxxxx

我可以使用telnet localhost xxxx手动连接到localhost,然后我就可以将命令从shell传递到localhost。