2012-06-01 58 views
3

有一个交互式shell控制台,我可以进入它,在控制台内运行特定的一组命令并退出它。在shell脚本中避免交互模式

现在我想编写一个连接到交互式shell控制台的bash脚本,并以静默方式运行我的命令,最后退出时没有任何交互。这意味着我希望以非交互方式让所有内容自动化。任何想法我怎么能做到这一点?

我想类似的东西,比方说,布拉布拉shell是交互式控制台这里,它总是带给我的交互模式:(

/usr/bin/blabla shell << EOF 
do A, 
do B, 
do C 
quit 
EOF 

我可以找到这个问题的长/特定版本在这里 - > Configure flume in shell/bash script - avoid interactive flume shell console

回答

1

关闭stdin应该做的伎俩:

exec <&- 
+0

感谢您的答复,在我的情况,应该是/ usr/bin中/布拉布拉壳<& - << EOF? – Shengjie

+2

根据[documentation](http://archive.cloudera.com/cdh/3/flume/UserGuide/#_using_the_flume_command_shell),您可以通过'echo“命令将命令传递给shell localhost:35873 \ ngetconfigs \ nquit”| flume shell -q' – Stefan

+1

如果关闭'stdin',shell是否可以读取here-doc? –

0

你可以尝试把

command < file 
1

如果你的朋友的expect命令:你会在互动提示到文件输入的命令,然后像运行命令。即使以非常复杂的方式,它也可以模拟与其他命令的交互式通信。

man expect

想到的是,“会谈”,与其它交互式程序按照一个脚本程序。

0

也许安全SHell,ssh做你所需要的。它要求将“远程”计算机配置为SSH服务器。我用它经常运行在其他主机的命令,如

ssh [email protected] command