Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- CONFIG_DIR="$HOME/.config/aling.sh"
- CONFIG_FILE="$CONFIG_DIR/servers.conf"
- mkdir -p "$CONFIG_DIR"
- # Pastikan dialog terinstall
- if ! command -v dialog &> /dev/null; then
- echo "Perlu menginstall 'dialog'. Silakan install dengan: sudo apt install dialog"
- exit 1
- fi
- # Fungsi deteksi terminal
- detect_terminal() {
- if [[ -n "$GNOME_TERMINAL_SCREEN" ]] || command -v gnome-terminal >/dev/null 2>&1; then
- echo "gnome-terminal"
- elif command -v terminator >/dev/null 2>&1; then
- echo "terminator"
- elif command -v konsole >/dev/null 2>&1; then
- echo "konsole"
- elif command -v xfce4-terminal >/dev/null 2>&1; then
- echo "xfce4-terminal"
- elif command -v tilix >/dev/null 2>&1; then
- echo "tilix"
- elif command -v alacritty >/dev/null 2>&1; then
- echo "alacritty"
- else
- echo "unknown"
- fi
- }
- # Fungsi membuka koneksi SSH dengan terminal sesuai
- open_ssh_connection() {
- local server_name="$1"
- local ssh_command="$2"
- local terminal="$3"
- case "$terminal" in
- "gnome-terminal")
- gnome-terminal --tab --title="$server_name" -- bash -c "$ssh_command; exec bash"
- ;;
- "terminator")
- terminator --new-tab --title="$server_name" -e "bash -c '$ssh_command; exec bash'"
- ;;
- "konsole")
- konsole --new-tab --title "$server_name" -e bash -c "$ssh_command; exec bash"
- ;;
- "xfce4-terminal")
- xfce4-terminal --tab --title="$server_name" -e "bash -c '$ssh_command; exec bash'"
- ;;
- "tilix")
- tilix --new-session --title="$server_name" -e "bash -c '$ssh_command; exec bash'"
- ;;
- "alacritty")
- alacritty -t "$server_name" -e bash -c "$ssh_command; exec bash" &
- ;;
- *)
- echo "Opening $server_name in fallback terminal..."
- x-terminal-emulator -e bash -c "$ssh_command; exec bash" &
- ;;
- esac
- }
- function add_server() {
- NAME=$(dialog --stdout --inputbox "Masukkan Nama Server:" 8 40)
- USERHOST=$(dialog --stdout --inputbox "Masukkan user@host:" 8 40)
- PORT=$(dialog --stdout --inputbox "Masukkan Port (default 22):" 8 40 "22")
- PASSWORD=$(dialog --stdout --insecure --passwordbox "Masukkan Password:" 8 40)
- if [[ -n "$NAME" && -n "$USERHOST" && -n "$PORT" && -n "$PASSWORD" ]]; then
- echo "$NAME:$USERHOST:$PORT:$PASSWORD" >> "$CONFIG_FILE"
- dialog --msgbox "Server berhasil disimpan!" 6 30
- else
- dialog --msgbox "Semua field harus diisi." 6 30
- fi
- }
- function connect_single() {
- if [ ! -f "$CONFIG_FILE" ]; then
- dialog --msgbox "Tidak ada konfigurasi server ditemukan." 6 40
- return
- fi
- OPTIONS=()
- while IFS=: read -r NAME USERHOST PORT PASSWORD; do
- OPTIONS+=("$NAME" "$USERHOST")
- done < "$CONFIG_FILE"
- CHOICE=$(dialog --stdout --menu "Pilih server untuk koneksi:" 15 50 6 "${OPTIONS[@]}")
- if [[ -n "$CHOICE" ]]; then
- LINE=$(grep "^$CHOICE:" "$CONFIG_FILE")
- IFS=: read -r server_name ssh_target port password <<< "$LINE"
- terminal=$(detect_terminal)
- ssh_cmd="sshpass -p '$password' ssh -t -o StrictHostKeyChecking=no -p $port $ssh_target 'export TERM=xterm; htop; exec bash'"
- echo "Connecting to $server_name ($ssh_target)..."
- open_ssh_connection "$server_name" "$ssh_cmd" "$terminal"
- fi
- }
- function connect_all() {
- if [ ! -f "$CONFIG_FILE" ]; then
- dialog --msgbox "Tidak ada konfigurasi server ditemukan." 6 40
- return
- fi
- terminal=$(detect_terminal)
- while IFS=: read -r server_name ssh_target port password; do
- ssh_cmd="sshpass -p '$password' ssh -t -o StrictHostKeyChecking=no -p $port $ssh_target 'export TERM=xterm; htop; exec bash'"
- echo "Connecting to $server_name ($ssh_target)..."
- open_ssh_connection "$server_name" "$ssh_cmd" "$terminal"
- sleep 0.3 # Delay ringan agar tab tidak tabrakan
- done < "$CONFIG_FILE"
- }
- function main_menu() {
- while true; do
- CHOICE=$(dialog --stdout --menu "aling.sh" 15 50 5 \
- 1 "Tambah Server Baru" \
- 2 "Koneksi ke Satu Server" \
- 3 "Koneksi ke Semua Server" \
- 0 "Keluar")
- case "$CHOICE" in
- 1) add_server ;;
- 2) connect_single ;;
- 3) connect_all ;;
- 0) clear; exit ;;
- esac
- done
- }
- main_menu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement