Caddyview/cmd/ssh.go
SW 68911b3af4
All checks were successful
Release / release (push) Successful in 1m4s
chore: rename module path to git.janvete.com/seth/caddyview
The repo lives on Forgejo; the github.com module path was a leftover
identifier. No functional change.
2026-10-17 22:42:21 +02:00

44 lines
1.1 KiB
Go

package cmd
import (
"fmt"
"os"
"git.janvete.com/seth/caddyview/internal/sshclient"
"git.janvete.com/seth/caddyview/internal/tui"
"github.com/spf13/cobra"
)
var (
sshPort int
logPath string
sshKeyPath string
)
var sshCmd = &cobra.Command{
Use: "ssh [user@host]",
Short: "Connect to server and monitor Caddy logs",
Example: ` caddyview ssh root@192.168.1.1
caddyview ssh -p 2222 admin@myserver.com
caddyview ssh -l /var/log/caddy/access.log root@192.168.1.1`,
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
target := args[0]
client, err := sshclient.Connect(target, sshPort, sshKeyPath)
if err != nil {
fmt.Fprintf(os.Stderr, "SSH connection failed: %v\n", err)
os.Exit(1)
}
defer client.Close()
return tui.Run(client, logPath)
},
}
func init() {
rootCmd.AddCommand(sshCmd)
sshCmd.Flags().IntVarP(&sshPort, "port", "p", 22, "SSH port")
sshCmd.Flags().StringVarP(&logPath, "log", "l", "/var/log/caddy/access.log", "Path to Caddy access log on remote server")
sshCmd.Flags().StringVarP(&sshKeyPath, "key", "i", "", "SSH private key path (default: ~/.ssh/id_rsa or id_ed25519)")
}