bento: add a default timeout to SFTP to avoid bento-upgrade.service to be stuck forever

This commit is contained in:
Solene Rapenne 2022-09-26 23:50:59 +02:00
parent a641340614
commit 05007ad188
1 changed files with 8 additions and 8 deletions

16
bento
View File

@ -197,7 +197,7 @@ touch .state
ssh-keygen -F "${REMOTE_IP}" >/dev/null || ssh-keyscan "${REMOTE_IP}" >> /root/.ssh/known_hosts
STATEFILE="\$(mktemp /tmp/bento-state.XXXXXXXXXXXXXXXX)"
echo "ls -l last_change_date" | sftp ${dest}@${REMOTE_IP} >"\${STATEFILE}"
echo "ls -l last_change_date" | sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP} >"\${STATEFILE}"
if [ "\$?" -ne 0 ]
then
@ -227,7 +227,7 @@ then
fi
else
echo "update required"
sftp ${dest}@${REMOTE_IP}:/config/bootstrap.sh .
sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP}:/config/bootstrap.sh .
/bin/sh bootstrap.sh
echo "\${STATE}" > "/var/bento/.state"
fi
@ -252,7 +252,7 @@ then
find . -maxdepth 1 -type d -exec rm -fr {} \;
find . -maxdepth 1 -type f -not -name .state -and -not -name update.sh -and -not -name bootstrap.sh -exec rm {} \;
printf "%s\n" "cd config" "get -R ." | sftp -r ${dest}@${REMOTE_IP}:
printf "%s\n" "cd config" "get -R ." | sftp -oConnectTimeout=20 -r ${dest}@${REMOTE_IP}:
# required by flakes
test -d .git || git init
@ -317,7 +317,7 @@ fi
# rollback if something is wrong
# we test connection to the sftp server
echo "ls -l last_change_date" | sftp ${dest}@${REMOTE_IP} >"\${LOGFILE}"
echo "ls -l last_change_date" | sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP} >"\${LOGFILE}"
if [ "\$?" -ne 0 ];
then
nixos-rebuild --rollback switch
@ -330,9 +330,9 @@ if [ "\$SUCCESS" -eq 0 ]
then
if [ "\$autoupdate" -eq 1 ]
then
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_autoupdate.log.gz" | sftp ${dest}@${REMOTE_IP}:
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_autoupdate.log.gz" | sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP}:
else
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_success.log.gz" | sftp ${dest}@${REMOTE_IP}:
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_success.log.gz" | sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP}:
fi
# handle auto reboot if kernel changed
@ -350,9 +350,9 @@ else
# check if we did a rollback
if [ "\$SUCCESS" -eq 255 ]
then
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_rollback.log.gz" | sftp ${dest}@${REMOTE_IP}:
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_rollback.log.gz" | sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP}:
else
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_failure.log.gz" | sftp ${dest}@${REMOTE_IP}:
echo "put \${LOGFILE}.gz /logs/\$(date +%Y%m%d-%H%M)_\${OSVERSION}_failure.log.gz" | sftp -oConnectTimeout=20 ${dest}@${REMOTE_IP}:
fi
fi
rm "\${LOGFILE}.gz"