Compare commits
13 Commits
4aa1631e50
...
1.4
Author | SHA1 | Date | |
---|---|---|---|
453a453f4f | |||
31b5e29c69 | |||
8b10b4b709 | |||
aad26d3fdd | |||
87a453c24c | |||
19eef79c2d | |||
48bfbd0a15 | |||
e2d0f220e4 | |||
dad2a0a902 | |||
04215f8320 | |||
76c9e4949c | |||
cad3690da3 | |||
8429669cdc |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
build/credentials
|
||||
build/deb/*.deb
|
@ -9,3 +9,10 @@ Select a ssh config file which will be used to connect to a host via - you guess
|
||||
```
|
||||
|
||||
Sample structure of `start directory` can be found in `test`.
|
||||
|
||||
## Quickstart
|
||||
```
|
||||
mkdir ~/.s3h
|
||||
touch root@example.org
|
||||
./s3h.sh
|
||||
```
|
||||
|
2
build/credentials.example
Normal file
2
build/credentials.example
Normal file
@ -0,0 +1,2 @@
|
||||
GITEA_USER=user
|
||||
GITEA_PASS=pass or token
|
42
build/deb/build_stable.sh
Executable file
42
build/deb/build_stable.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
NAME=s3h
|
||||
VERSION=`../../s3h.sh -v`
|
||||
REVISION=1
|
||||
ARCH=all
|
||||
|
||||
if ! git tag -l |fgrep $VERSION; then
|
||||
git tag $VERSION
|
||||
git push origin $VERSION
|
||||
fi
|
||||
|
||||
curdir=`dirname $0`
|
||||
workdir="$curdir/${NAME}_${VERSION}-${REVISION}_${ARCH}"
|
||||
mkdir -p "$workdir"
|
||||
|
||||
mkdir -p "$workdir/usr/bin"
|
||||
wget -O "$workdir/usr/bin/s3h" "https://source.devloop.de/damage/s3h/raw/tag/$VERSION/s3h.sh"
|
||||
chmod 0777 "$workdir/usr/bin/s3h"
|
||||
|
||||
mkdir "$workdir/DEBIAN"
|
||||
cat << EOT > "$workdir/DEBIAN/control"
|
||||
Package: $NAME
|
||||
Version: $VERSION
|
||||
Architecture: $ARCH
|
||||
Maintainer: Daniel Buschke <damage@devloop.de>
|
||||
Description: SSH Session Manager for CLI
|
||||
s3h is a SSH Session Manager which is completly running on cli.
|
||||
Homepage: https://source.devloop.de/damage/s3h
|
||||
Depends: dialog
|
||||
EOT
|
||||
|
||||
dpkg-deb --build --root-owner-group "$workdir"
|
||||
if [[ $? -eq 0 ]]; then
|
||||
source "$curdir/../credentials"
|
||||
curl --user "$GITEA_USER:$GITEA_PASS" \
|
||||
--upload-file "${NAME}_${VERSION}-${REVISION}_${ARCH}.deb" \
|
||||
https://source.devloop.de/api/packages/damage/debian/pool/stable/main/upload
|
||||
|
||||
rm -rf "$workdir"
|
||||
fi
|
42
s3h.sh
42
s3h.sh
@ -3,11 +3,25 @@
|
||||
# config
|
||||
DIALOG=dialog #gdialog kdialog
|
||||
START_DIR='~/.s3h'
|
||||
VERSION="1.4"
|
||||
|
||||
# TODO: use opt parsing
|
||||
if [[ $# -eq 1 && "$1" == "-v" ]]; then
|
||||
echo "$VERSION"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ $# -eq 1 && -d "$1" ]]; then
|
||||
START_DIR="$1"
|
||||
fi
|
||||
|
||||
if [[ ! -d "$START_DIR" ]]; then
|
||||
echo "start directory '$START_DIR' does not exist" >&2
|
||||
echo -e "either create or set 'start directory' parameter\n" >&2
|
||||
echo "Usage: $0 [start directory]" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# select config file
|
||||
configFile=''
|
||||
while [[ -z "$configFile" ]]; do
|
||||
@ -24,14 +38,24 @@ while [[ -z "$configFile" ]]; do
|
||||
fi
|
||||
|
||||
# add directory selectors
|
||||
for d in `find $dir -mindepth 1 -maxdepth 1 -type d -printf "%f\n" |sort`; do
|
||||
dirs=`find $dir -mindepth 1 -maxdepth 1 ! -name '.*' -type d -printf "%f\n" |sort`
|
||||
for d in $dirs; do
|
||||
para+=("$d" "<$d>")
|
||||
done
|
||||
# add file selectors
|
||||
for d in `find $dir -mindepth 1 -maxdepth 1 -type f -printf "%f\n" |sort`; do
|
||||
files=`find $dir -mindepth 1 -maxdepth 1 ! -name '.*' -type f -printf "%f\n" |sort`
|
||||
for d in $files; do
|
||||
para+=("$d" "$d")
|
||||
done
|
||||
|
||||
if [[ ${#para[@]} -eq 0 ]]; then
|
||||
echo "no file or directory found in '$dir'" >&2
|
||||
echo "either create a connection file like" >&2
|
||||
echo -e "\ttouch '$dir/root@example.org'" >&2
|
||||
echo "or create a group by adding a directory" >&2
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# run dialog
|
||||
ret=$("$DIALOG" --no-tags --stdout --menu "select connection" 0 0 0 ${para[@]} 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
@ -51,19 +75,27 @@ while [[ -z "$configFile" ]]; do
|
||||
fi
|
||||
done
|
||||
|
||||
echo "config file '$configFile' selected. connecting..."
|
||||
|
||||
# read config file and connect
|
||||
if [[ -f "$configFile" ]]; then
|
||||
clear
|
||||
# each line equals one config option
|
||||
para=()
|
||||
while read -r configLine; do
|
||||
para+=($configLine)
|
||||
done < "$configFile"
|
||||
|
||||
# lookup group specific option file
|
||||
if [[ -f "$dir/.options" ]]; then
|
||||
while read -r configLine; do
|
||||
para+=($configLine)
|
||||
done < "$dir/.options"
|
||||
echo "using group options file '$dir/.options'"
|
||||
fi
|
||||
|
||||
# clear screen // remove dialog colors
|
||||
clear
|
||||
echo "config file '$configFile' selected. connecting..."
|
||||
|
||||
# execute ssh
|
||||
echo "Running 'ssh ${para[@]} `basename \"$configFile\"`'"
|
||||
ssh ${para[@]} `basename "$configFile"`
|
||||
fi
|
||||
|
1
test/foo11/.options
Normal file
1
test/foo11/.options
Normal file
@ -0,0 +1 @@
|
||||
-o AddKeysToAgent=yes
|
Reference in New Issue
Block a user