我正在尝试自动化启动EC2实例的完整过程,然后对其执行一些执行然后关闭它。除了一个问题,一切都很好。
我无法通过SSH进入我的EC2实例。要SSH到刚刚创建的EC2,我需要该特定实例的RSA指纹,该指纹不可用。现在我可以使用aws cli提取日志,但从那里提取日志非常复杂,因为提取的文件不包含新行字符。是否有任何直接命令可以通过它来了解EC2实例的指纹是什么,而无需登录?
我使用winscp通过以下命令
登录系统"open sftp://ec2-user@%varPublicIp% -timeout=120 -privatekey="D:\subham_ec2key\privateKey-us-west-1.ppk" -hostkey="<RSA FINGERPRINT>""
答案 0 :(得分:0)
以下代码段将解决问题。代码段用于批处理脚本。
aws ec2 get-console-output --output table --instance-id "i-256789"> InstanceId.txt
findstr "(RSA)" varInstanceId.txt>RSAFingerprint.txt
for /f "tokens=3 delims= " %%G in (RSAFingerprint.txt) do @echo %%G>RSAFingerprint.txt
for /f "delims=" %%G in (RSAFingerprint.txt) do set varRSAFingerprint=%%G
echo varRSAFingerprint: %varRSAFingerprint%
现在让我们逐行了解上述代码
aws ec2 get-console-output --output table --instance-id "i-256789"> InstanceId.txt
ec2控制台输出将提供EC2实例的系统日志。以table
格式输出是非常必要的,否则json输出不会在文件中提供任何CRLF,从而无法提取RSA指纹。
findstr "(RSA)" varInstanceId.txt>RSAFingerprint.txt
从生成的syslog文件中查找(RSA)
关键字,当它在该文件中找到(RSA)
关键字时,它将返回包含该关键字的完整行,并将其放入RSAFingerprint.txt
for /f "tokens=3 delims= " %%G in (RSAFingerprint.txt) do @echo %%G>RSAFingerprint.txt
以上行仅从先前提取的行中提取指纹。
for /f "delims=" %%G in (RSAFingerprint.txt) do set varRSAFingerprint=%%G
以上行会将指纹放在变量varRSAFingerprint
中。