解决Bash脚本中YUM安装后SSH自动断开无法执行后续命令的问题
解决SSH会话在yum安装CrowdStrike传感器后中断的问题
问题原因
你的脚本使用了交互式的yum install命令,依赖手动输入y确认安装。虽然在here-doc中加入了y行,但这种方式容易出现输入时机不匹配的问题:yum可能还没准备好读取输入就收到了y,或者安装完成后yum进程残留占用标准输入,导致SSH会话提前终止。此外,CrowdStrike传感器安装过程中对系统环境的修改,在交互式场景下更易触发会话中断。
解决方案
1. 给yum添加自动确认参数-y
直接修改yum install命令,用-y参数自动确认所有安装提示,彻底避免交互式输入,让后续命令连贯执行:
source .env echo "### Installing agent on $HOST_NAME ###" scp -i ~/.ssh/test-key.pem $AGENT_NAME ec2-user@$HOST_NAME: ssh -i ~/.ssh/test-key.pem -T ec2-user@$HOST_NAME << EOL sudo yum install -y "$AGENT_NAME" sudo /opt/CrowdStrike/falconctl -s --cid="$FALCON_CID" sudo service falcon-sensor start ps -e | grep falcon-sensor EOL
2. 确保命令执行的原子性(可选)
如果担心安装失败后误执行后续命令,可以用&&串联命令,只有前序命令执行成功才会触发下一个:
source .env echo "### Installing agent on $HOST_NAME ###" scp -i ~/.ssh/test-key.pem $AGENT_NAME ec2-user@$HOST_NAME: ssh -i ~/.ssh/test-key.pem -T ec2-user@$HOST_NAME << EOL sudo yum install -y "$AGENT_NAME" && \ sudo /opt/CrowdStrike/falconctl -s --cid="$FALCON_CID" && \ sudo service falcon-sensor start && \ ps -e | grep falcon-sensor EOL
3. 拆分SSH会话(若问题仍存在)
如果添加-y后还是出现会话中断,可能是传感器的安全规则影响了SSH会话。可以将安装与激活启动操作拆分为两个独立的SSH会话:
source .env echo "### Installing agent on $HOST_NAME ###" scp -i ~/.ssh/test-key.pem $AGENT_NAME ec2-user@$HOST_NAME: # 第一步:执行安装 ssh -i ~/.ssh/test-key.pem -T ec2-user@$HOST_NAME << EOL_INSTALL sudo yum install -y "$AGENT_NAME" EOL_INSTALL # 安装成功后执行激活与启动 if [ $? -eq 0 ]; then echo "### Activating and starting agent on $HOST_NAME ###" ssh -i ~/.ssh/test-key.pem -T ec2-user@$HOST_NAME << EOL_ACTIVATE sudo /opt/CrowdStrike/falconctl -s --cid="$FALCON_CID" sudo service falcon-sensor start ps -e | grep falcon-sensor EOL_ACTIVATE fi
内容的提问来源于stack exchange,提问作者juicya
相关产品推荐
相关产品推荐

