我是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交互/发送命令?
答案 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。