Advertisement
shutdown57

aling.sh - manage server

Jul 9th, 2025
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.51 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. CONFIG_DIR="$HOME/.config/aling.sh"
  4. CONFIG_FILE="$CONFIG_DIR/servers.conf"
  5. mkdir -p "$CONFIG_DIR"
  6.  
  7. # Pastikan dialog terinstall
  8. if ! command -v dialog &> /dev/null; then
  9.     echo "Perlu menginstall 'dialog'. Silakan install dengan: sudo apt install dialog"
  10.     exit 1
  11. fi
  12.  
  13. # Fungsi deteksi terminal
  14. detect_terminal() {
  15.     if [[ -n "$GNOME_TERMINAL_SCREEN" ]] || command -v gnome-terminal >/dev/null 2>&1; then
  16.         echo "gnome-terminal"
  17.     elif command -v terminator >/dev/null 2>&1; then
  18.         echo "terminator"
  19.     elif command -v konsole >/dev/null 2>&1; then
  20.         echo "konsole"
  21.     elif command -v xfce4-terminal >/dev/null 2>&1; then
  22.         echo "xfce4-terminal"
  23.     elif command -v tilix >/dev/null 2>&1; then
  24.         echo "tilix"
  25.     elif command -v alacritty >/dev/null 2>&1; then
  26.         echo "alacritty"
  27.     else
  28.         echo "unknown"
  29.     fi
  30. }
  31.  
  32. # Fungsi membuka koneksi SSH dengan terminal sesuai
  33. open_ssh_connection() {
  34.     local server_name="$1"
  35.     local ssh_command="$2"
  36.     local terminal="$3"
  37.  
  38.     case "$terminal" in
  39.         "gnome-terminal")
  40.             gnome-terminal --tab --title="$server_name" -- bash -c "$ssh_command; exec bash"
  41.             ;;
  42.         "terminator")
  43.             terminator --new-tab --title="$server_name" -e "bash -c '$ssh_command; exec bash'"
  44.             ;;
  45.         "konsole")
  46.             konsole --new-tab --title "$server_name" -e bash -c "$ssh_command; exec bash"
  47.             ;;
  48.         "xfce4-terminal")
  49.             xfce4-terminal --tab --title="$server_name" -e "bash -c '$ssh_command; exec bash'"
  50.             ;;
  51.         "tilix")
  52.             tilix --new-session --title="$server_name" -e "bash -c '$ssh_command; exec bash'"
  53.             ;;
  54.         "alacritty")
  55.             alacritty -t "$server_name" -e bash -c "$ssh_command; exec bash" &
  56.             ;;
  57.         *)
  58.             echo "Opening $server_name in fallback terminal..."
  59.             x-terminal-emulator -e bash -c "$ssh_command; exec bash" &
  60.             ;;
  61.     esac
  62. }
  63.  
  64.  
  65. function add_server() {
  66.     NAME=$(dialog --stdout --inputbox "Masukkan Nama Server:" 8 40)
  67.     USERHOST=$(dialog --stdout --inputbox "Masukkan user@host:" 8 40)
  68.     PORT=$(dialog --stdout --inputbox "Masukkan Port (default 22):" 8 40 "22")
  69.     PASSWORD=$(dialog --stdout --insecure --passwordbox "Masukkan Password:" 8 40)
  70.  
  71.     if [[ -n "$NAME" && -n "$USERHOST" && -n "$PORT" && -n "$PASSWORD" ]]; then
  72.         echo "$NAME:$USERHOST:$PORT:$PASSWORD" >> "$CONFIG_FILE"
  73.         dialog --msgbox "Server berhasil disimpan!" 6 30
  74.     else
  75.         dialog --msgbox "Semua field harus diisi." 6 30
  76.     fi
  77. }
  78.  
  79. function connect_single() {
  80.     if [ ! -f "$CONFIG_FILE" ]; then
  81.         dialog --msgbox "Tidak ada konfigurasi server ditemukan." 6 40
  82.         return
  83.     fi
  84.  
  85.     OPTIONS=()
  86.     while IFS=: read -r NAME USERHOST PORT PASSWORD; do
  87.         OPTIONS+=("$NAME" "$USERHOST")
  88.     done < "$CONFIG_FILE"
  89.  
  90.     CHOICE=$(dialog --stdout --menu "Pilih server untuk koneksi:" 15 50 6 "${OPTIONS[@]}")
  91.     if [[ -n "$CHOICE" ]]; then
  92.         LINE=$(grep "^$CHOICE:" "$CONFIG_FILE")
  93.         IFS=: read -r server_name ssh_target port password <<< "$LINE"
  94.  
  95.         terminal=$(detect_terminal)
  96.         ssh_cmd="sshpass -p '$password' ssh -t -o StrictHostKeyChecking=no -p $port $ssh_target 'export TERM=xterm; htop; exec bash'"
  97.  
  98.         echo "Connecting to $server_name ($ssh_target)..."
  99.         open_ssh_connection "$server_name" "$ssh_cmd" "$terminal"
  100.     fi
  101. }
  102.  
  103.  
  104.  
  105.  
  106. function connect_all() {
  107.     if [ ! -f "$CONFIG_FILE" ]; then
  108.         dialog --msgbox "Tidak ada konfigurasi server ditemukan." 6 40
  109.         return
  110.     fi
  111.  
  112.     terminal=$(detect_terminal)
  113.  
  114.     while IFS=: read -r server_name ssh_target port password; do
  115.         ssh_cmd="sshpass -p '$password' ssh -t -o StrictHostKeyChecking=no -p $port $ssh_target 'export TERM=xterm; htop; exec bash'"
  116.         echo "Connecting to $server_name ($ssh_target)..."
  117.         open_ssh_connection "$server_name" "$ssh_cmd" "$terminal"
  118.         sleep 0.3  # Delay ringan agar tab tidak tabrakan
  119.     done < "$CONFIG_FILE"
  120. }
  121.  
  122.  
  123. function main_menu() {
  124.     while true; do
  125.         CHOICE=$(dialog --stdout --menu "aling.sh" 15 50 5 \
  126.             1 "Tambah Server Baru" \
  127.             2 "Koneksi ke Satu Server" \
  128.             3 "Koneksi ke Semua Server" \
  129.             0 "Keluar")
  130.  
  131.         case "$CHOICE" in
  132.             1) add_server ;;
  133.             2) connect_single ;;
  134.             3) connect_all ;;
  135.             0) clear; exit ;;
  136.         esac
  137.     done
  138. }
  139.  
  140. main_menu
  141.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement