diff --git a/home/.local/Apps/daily-utils/bin/hari-tools.sh b/home/.local/Apps/daily-utils/bin/hari-tools.sh index 673ac82..e8ed434 100755 --- a/home/.local/Apps/daily-utils/bin/hari-tools.sh +++ b/home/.local/Apps/daily-utils/bin/hari-tools.sh @@ -471,11 +471,70 @@ Host * ServerAliveInterval 40 EEE -while :; do ssh -R 4025:127.0.0.1:22 myguest@${1:-myserver}; sleep 10; done; +while :; do ssh -NT -R 4025:127.0.0.1:22 myguest@${1:-myserver}; sleep 10; done; EOF } +# Usage: mysqlCreateDbUser [password] [database] +mysqlCreateDbUser() { + if [ $# -ne 1 ]; then + echo "Usage: ${FUNCNAME[0]} [password] [database]" >&2 + return 1 + fi + + local randPass=$(openssl rand -base64 18) + local username="$1" + local defDbName="${username}_db" + local user_password="${2:-$randPass}" + local db_name="${3:-$defDbName}" + + # Validate username + if [[ -z "$username" || "$username" =~ [^a-zA-Z0-9_-] ]]; then + echo "Error: Invalid username. Only alphanumeric, hyphen, and underscore allowed." >&2 + return 1 + fi + + echo -e "-- Using password '$user_password' for user '$username' and creating database '$db_name' \n" + + # Execute MySQL commands + cat< +csv2duckdb(){ + csv=$1; + tbl="$(basename $csv)" + tbl=${tbl%.*}; + tbl="$(echo $tbl | sed 's/[^[:alnum:]]/_/g' )"; + echo "CREATE TABLE $tbl AS SELECT * FROM '$csv';" | duckdb "$tbl.duckdb" ; +} + +# Create sqlite3 db from csv. Usage csv2sqlite +csv2sqlite(){ + csv=$1; + tbl="$(basename $csv)" + tbl=${tbl%.*}; + tbl="$(echo $tbl | sed 's/[^[:alnum:]]/_/g' )"; + echo "ATTACH '$tbl.db' AS sqdb (TYPE sqlite); CREATE TABLE sqdb.$tbl AS SELECT * FROM '$csv';" | duckdb ; +} + +# Expose port of container using pasta. pastaExpose +pastaExpose(){ + cont=$1; + portMapping=$2; + contPid=$(podman inspect -f '{{.State.Pid}}' $cont); + pasta -f --config-net -t $portMapping -u none -T none -U none --no-map-gw $contPid; + # pasta -f --config-net -t $portMapping --dns-forward 169.254.1.1 -u none -T none -U none --no-map-gw --map-guest-addr 169.254.1.2 $contPid; +} + + +#### END OF USER FUNCTIONS #### # Setup autocomplete. run eval "$(THIS_FILE setup-autocomplete)" setup-autocomplete(){ cat<