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
相关产品推荐
相关产品推荐

