Samba Backup
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
#!/command/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Perform a pre-check if the Samba share is configured correctly.
|
||||
#
|
||||
# Returns 1 in case of a failure
|
||||
# ------------------------------------------------------------------------------
|
||||
function smb-precheck {
|
||||
local result
|
||||
local shares
|
||||
|
||||
# check if we can access the share at all
|
||||
if ! result=$(eval "${SMB} -c 'exit'"); then
|
||||
bashio::log.warning "$result"
|
||||
|
||||
# host not found
|
||||
if [[ "$result" =~ "NT_STATUS_NOT_FOUND" ]]; then
|
||||
bashio::log.fatal "The provided host cannot be found. If you've specified a DNS name, please try using an IP address instead."
|
||||
|
||||
# host unreachable
|
||||
elif [[ "$result" =~ "NT_STATUS_HOST_UNREACHABLE" ]]; then
|
||||
bashio::log.fatal "The provided host is unreachable. Please check your config and network."
|
||||
|
||||
# SMB1 problem
|
||||
elif [[ "$result" =~ "NT_STATUS_CONNECTION_DISCONNECTED" ]]; then
|
||||
bashio::log.fatal "Cannot access share. It seems that your share only supports insecure SMB protocols."
|
||||
bashio::log.fatal "If you want me to connect, please check the \"compatibility_mode\" option. Use at your own risk."
|
||||
|
||||
# share does not exist
|
||||
elif [[ "$result" =~ "NT_STATUS_BAD_NETWORK_NAME" ]]; then
|
||||
bashio::log.fatal "Cannot access share. It seems that your configured share does not exist."
|
||||
|
||||
# try to find out which shares exist
|
||||
if shares=$(eval "${ALL_SHARES}"); then
|
||||
bashio::log.fatal "I found the following shares on your host. Did you mean one of those?"
|
||||
bashio::log.fatal "$shares"
|
||||
fi
|
||||
|
||||
# access denied
|
||||
elif [[ "$result" =~ "NT_STATUS_ACCESS_DENIED" ]]; then
|
||||
bashio::log.fatal "Cannot access share. Access denied. Please check your share permissions."
|
||||
|
||||
# login failed
|
||||
elif [[ "$result" =~ "NT_STATUS_LOGON_FAILURE" ]]; then
|
||||
bashio::log.fatal "Cannot access share. Login failed. Please check your credentials."
|
||||
|
||||
# unknown reason
|
||||
else
|
||||
bashio::log.fatal "Cannot access share. Unknown reason."
|
||||
fi
|
||||
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check if the target directory exists
|
||||
if ! run-and-log "${SMB} -c 'cd \"${TARGET_DIR}\"'"; then
|
||||
bashio::log.fatal "Target directory does not exist. Please check your config."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# check if we have write permissions
|
||||
touch samba-tmp123
|
||||
if ! run-and-log "${SMB} -c 'cd \"${TARGET_DIR}\"; put samba-tmp123; rm samba-tmp123'"; then
|
||||
bashio::log.fatal "Missing write permissions on target folder. Please check your share settings."
|
||||
return 1
|
||||
fi
|
||||
rm samba-tmp123
|
||||
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user