2017-03-04 17 views
1

长时间没有编写程序,我正在为这个问题挠头。我首先做了一些研究,但到目前为止我没有发现任何工作。因此,这里是我的任务:如何让命令按顺序运行,其中第一个命令打开单独的shell

1)第一个命令:

openssl s_client -crlf -quiet -connect email-smtp.us-east-1.amazonaws.com:465 

,这将打开一个单独的壳(不知道这是否是正确的术语,把它称为壳尚未那就是来自于我的脑海里)和输出如下”

[email protected]:~/script$ openssl s_client -crlf -quiet -connect email-smtp.us-east-1.amazonaws.com:465 
depth=1 C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 Secure Server CA - G4 
verify error:num=20:unable to get local issuer certificate 
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-1866227133 zmydXvw5oa7oYxVcuSDr 

2)现在请输入第二命令:EHLO IP-172-31-49-138

这产生以下输出 -

[email protected]:~/script$ openssl s_client -crlf -quiet -connect email-smtp.us-east-1.amazonaws.com:465 
depth=1 C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 Secure Server CA - G4 
verify error:num=20:unable to get local issuer certificate 
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-1866227133 zmydXvw5oa7oYxVcuSDr 
EHLO ip-172-31-49-138 
250-email-smtp.amazonaws.com 
250-8BITMIME 
250-SIZE 10485760 
250-AUTH PLAIN LOGIN 
250 Ok 

所以我需要编写一个bash脚本来自动执行这两个命令(有更多的命令,但为了简单起见,我只列出前两个)。

无论我使用&,还是分组{}或插入回车线,脚本都会首先执行第一个命令,这会在等待超时之前等待某些内容,然后调用第二个命令,此时系统将会

[email protected]:~/script$ ./sendMail 
depth=1 C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 Secure Server CA - G4 
verify error:num=20:unable to get local issuer certificate 
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-1866227133 CuOz95oNth2yafnNOxp4 
421 Timeout waiting for data from client. 
./sendMail: line 3: EHLO: command not found 
[email protected]:~/script$ 

希望有人能提供一些线索到它:因为它仅可同时还在外壳带来了第一个命令无法识别它。

回答

0

你的第二个“命令”根本不是命令 - 它被输入到你的第一个命令中。因此,你需要管它。以下将工作:

echo EHLO ip-172-31-49-138 | openssl s_client -crlf -quiet -connect email-smtp.us-east-1.amazonaws.com:465 
+0

嗨约瑟夫:宾果! Thx的小费,它的作品。虽然我的第一个关注点已经得到很好的解决,但是现在又到了我的下一个问题:如果我对命令有更多的输入,该怎么办。例如,我尝试了“AUTH LOGIN | echo EHLO ip-172-31-49-138 | openssl s_client -crlf -quiet -connect email-smtp.us-east-1.amazonaws.com:465”,但它没有起作用。在第一个命令后面我还有大约10个输入。 –

+0

把它们全部放在这里的文档中:https://en.m.wikipedia.org/wiki/Here_document –

+0

哇,heredoc是溶剂。感谢您的帮助! –