45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # needs: col, date, pwgen, ssh, xclip, notify-send, tee, tr
 | |
| 
 | |
| # configuration
 | |
| _ssh="sdk@codevoid.de"
 | |
| _remote_dir="/home/www/htdocs/http/p"
 | |
| _web_location="https://codevoid.de/h/p"
 | |
| 
 | |
| # handle -h parameter
 | |
| if [ "$1" = "-h" ]; then
 | |
|     printf "Usage:\n"
 | |
|     printf "  hpaste < text.txt         - read from stdin, generate filename\n"
 | |
|     printf "  hpaste new.txt < file.txt - read from stdin with filename\n"
 | |
|     printf "  hpaste file.txt           - upload file as is\n"
 | |
|     exit 2
 | |
| fi
 | |
| 
 | |
| # if there is no parameter: read STDIN
 | |
| if [ -z "${1}" ]; then
 | |
|     # read stdin into some fancy file
 | |
|     _file="/tmp/$(date +"%Y-%m-%d_%M-%S")-$(pwgen -1 4 -A -0).txt"
 | |
|     cat > "${_file}"
 | |
|     # upload it
 | |
|     scp "${_file}" ${_ssh}:"${_remote_dir}/$(basename "${_file}")"
 | |
| 
 | |
| # we have a parameter, and it is a file
 | |
| elif [ -f "${1}" ]; then
 | |
|     # normalize filename
 | |
|     _file="$(readlink -f "${1}")"
 | |
|     chmod 644 "${_file}"
 | |
|     scp "${_file}" ${_ssh}:"${_remote_dir}/$(basename "${_file}")"
 | |
| 
 | |
| # we have a parameter, but it is no file (let's read STDIN again, and
 | |
| # use the parameter as filename)
 | |
| else
 | |
|     _file="/tmp/$(printf '%s' "${1}" | col -b | tr -s ' /' '_' | head -n 1)"
 | |
|     cat > "${_file}"
 | |
|     scp "${_file}" ${_ssh}:"${_remote_dir}/$(basename "${_file}")"
 | |
| fi
 | |
| 
 | |
| printf "${_web_location}/$(basename "${_file}")\n" \
 | |
|     | tee | tr -d '\n' | xclip -i
 | |
| 
 | |
| [ -z $DISPLAY ] || notify-send "$(xclip -o)"
 | 
