You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04 Hyper-V虚拟机中Tomcat自动部署Bash脚本报意外EOF错误求助

Ubuntu 20.04 Hyper-V虚拟机中Tomcat自动部署Bash脚本报意外EOF错误求助

我写了一个bash脚本,用来自动把Web应用部署到我的Tomcat服务器上,但一直遇到unexpected end of file错误。我反复检查了代码逻辑,看起来没什么问题,还试了好几个在线bash语法检查工具,也没检测出任何语法问题。

我的运行环境是Ubuntu 20.04 LTS Hyper-V虚拟机。

下面是我的bash代码:

#!/bin/bash

CURRENT_DIRECTORY_PATH="$PWD"

PROPS_PATH=$CURRENT_DIRECTORY_PATH/iiq_auto_deployment.properties

certsIIQ_PATH=$CURRENT_DIRECTORY_PATH/certsIIQ

TOMCAT_PATH=$(grep TOMCAT_PATH "$PROPS_PATH" | cut -d= -f2)

WAR_PATH=$(grep WAR_PATH "$PROPS_PATH" | cut -d= -f2)

SERVICE_PATH=$(grep SERVICE_PATH "$PROPS_PATH" | cut -d= -f2)

BACKUP_PATH=$(grep BACKUP_PATH "$PROPS_PATH" | cut -d= -f2)

BACKUP_IIQ=$(grep BACKUP_IIQ "$PROPS_PATH" | cut -d= -f2)

BACKUP_WAR=$(grep BACKUP_WAR "$PROPS_PATH" | cut -d= -f2)

launchIIQConsole=$(grep launchIIQConsole "$PROPS_PATH" | cut -d= -f2)

date=$(date +%d-%m-%Y)

FILECMD_IMPORT=$CURRENT_DIRECTORY_PATH/import_sp_init_custom.txt

IIQPROPERTIES_FILE=/home/centos/Desktop #a enlever

# Check if the passenc file already exists

if [ ! -f "$certsIIQ_PATH/.passenc" ]

then

# Read user's username and password

read -r -s -p "Username: " username

read -r -s -p "Password: " password

# Generate private key and public key to encrypt/decrypt password

mkdir "$certsIIQ_PATH"

sudo openssl genrsa -out "$certsIIQ_PATH"/passwordPrivKey.pem 2048

sudo openssl rsa -in "$certsIIQ_PATH"/passwordPrivKey.pem -text -noout

sudo openssl rsa -in "$certsIIQ_PATH"/passwordPrivKey.pem -pubout -out "$certsIIQ_PATH"/passwordPubKey.pem

sudo openssl rsa -in "$certsIIQ_PATH"/passwordPubKey.pem -pubin -text -noout

sudo chmod 400 "$certsIIQ_PATH"/passwordPrivKey.pem

# Save username and password inside a file and encrypt it

echo "$password" > "$certsIIQ_PATH"/.pass

echo "$username" > "$certsIIQ_PATH"/.username

sudo chmod 400 "$certsIIQ_PATH"/.pass

sudo openssl rsautl -encrypt -inkey "$certsIIQ_PATH"/passwordPubKey.pem -pubin -in "$certsIIQ_PATH"/.pass -out "$certsIIQ_PATH"/.passenc

rm -f "$certsIIQ_PATH"/.pass

fi

if [ ! -d "$BACKUP_PATH" ]

then

mkdir "$BACKUP_PATH"

fi

if [ ! -d "$BACKUP_IIQ" ]

then

mkdir "$BACKUP_IIQ"

fi

if [ ! -d "$BACKUP_WAR" ]

then

mkdir "$BACKUP_WAR"

fi

if [ -d "$TOMCAT_PATH" ]

then

if [ -f "$WAR_PATH" ]

then

if [ -f "$SERVICE_PATH" ]

then

sudo systemctl stop tomcat

echo "Le service Apache Tomcat s'est arrete correctement."

sleep 1.5

echo "Sauvagarde du dossier IdentityIQ actuel..."

sleep 1

sudo mv "$TOMCAT_PATH"/webapps/identityiq "$BACKUP_IIQ"/identityiq.backup"$date"

echo "Decompression du fichier WAR..."

sleep 1.5

sudo unzip -o "$WAR_PATH" -d "$TOMCAT_PATH"/webapps/identityiq

echo "Decompression du fichier WAR terminee."

sudo cp $IIQPROPERTIES_FILE/iiq.properties "$TOMCAT_PATH"/webapps/identityiq/WEB-INF/classes #a enlever

if [ -f "$TOMCAT_PATH/webapps/identityiq/WEB-INF/lib/mssql-jdbc-10.2.1.jre17.jar" ]

then

sudo rm "$TOMCAT_PATH"/webapps/identityiq/WEB-INF/lib/mssql-jdbc-10.2.1.jre17.jar

fi

if [ "$launchIIQConsole" == true ]

then

if [ ! -f "$FILECMD_IMPORT" ]

then

echo "Creation du fichier temporaire..."

echo "import sp.init-custom.xml">"$FILECMD_IMPORT"

fi

username=$(cat "$certsIIQ_PATH"/.username)

password=$(sudo openssl rsautl -decrypt -inkey"$certsIIQ_PATH"/passwordPrivKey.pem -in "$certsIIQ_PATH"/.passenc)

sudo chmod +x "$TOMCAT_PATH"/webapps/identityiq/WEB-INF/bin/iiq

echo "IIQ Console is launched!"

cd "$TOMCAT_PATH"/webapps/identityiq/WEB-INF/bin/ && ./iiq console -u "$username" -p "$password" < "$FILECMD_IMPORT"

fi

sudo systemctl start tomcat

echo "Le service Apache Tomcat a demarre correctement."

sudo mv "$WAR_PATH" "$BACKUP_WAR"/identityiq.war"$date"

if [ -f "$FILECMD_IMPORT" ]

then

rm "$FILECMD_IMPORT"

fi

sudo find "$BACKUP_IIQ" -mtime +1 -exec rm -rf {} \;

sudo find "$BACKUP_WAR" -mtime +1 -exec rm -rf {} \;

echo "Old files deleted successfully."

else

echo "Le fichier $SERVICE_PATH n'existe pas."

fi

else

echo "Le fichier $WAR_PATH n'existe pas."

fi

else

echo "Le repertoire $TOMCAT_PATH n'existe pas."

fi

如果有人能帮忙找出问题所在,我会非常感激!谢谢!

备注:内容来源于stack exchange,提问作者Hady Ijreiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:32:38