यदि आप केवल SAN को देखना चाहते हैं , grep DNS:
तो स्पष्ट समाधान है।
यदि आप आगे की प्रक्रिया के लिए एक क्लीनर सूची रखना चाहते हैं, तो आप केवल नामों को निकालने के लिए इस पर्ल रेगेक्स का उपयोग कर सकते हैं: @names=/\sDNS:([^\s,]+)/g
उदाहरण के लिए:
true | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\bDNS:([^\s,]+)/g; print join("\n", sort @names);'
जो इसका उत्पादन करेगा:
example.com
example.edu
example.net
example.org
www.example.com
www.example.edu
www.example.net
www.example.org
इसलिए आप उसे पाइप कर सकते हैं while read name; do echo "processing $name ..."; done
आदि।
या एक लाइन पर अल्पविराम से अलग की गई सूची के join("\n",
साथ बदलेंjoin(",",
( -0777
पर्ल के लिए स्विच यह लाइन द्वारा लाइन के बजाय एक बार में पूरे इनपुट को पढ़ता है)
openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text