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$
希望有人能提供一些线索到它:因为它仅可同时还在外壳带来了第一个命令无法识别它。
嗨约瑟夫:宾果! 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个输入。 –
把它们全部放在这里的文档中:https://en.m.wikipedia.org/wiki/Here_document –
哇,heredoc是溶剂。感谢您的帮助! –