Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 52e25aad77 | |||
| 9f996f60c6 | |||
| 4c152f8089 | |||
| 4d2e4ce533 | |||
| 9e3960ce9f | |||
| b2d89352a3 |
3
.changes/v0.11.4.md
Normal file
3
.changes/v0.11.4.md
Normal file
@@ -0,0 +1,3 @@
|
||||
## v0.11.4 - 2026-02-01
|
||||
### Changed
|
||||
* Command.[name].output.file: now appends correctly to the beginning of file in an absolute path
|
||||
3
.changes/v0.11.5.md
Normal file
3
.changes/v0.11.5.md
Normal file
@@ -0,0 +1,3 @@
|
||||
## v0.11.5 - 2026-02-10
|
||||
### Changed
|
||||
* Command.Type: scriptFile no longer requests psudoterminal
|
||||
3
.changes/v0.12.0.md
Normal file
3
.changes/v0.12.0.md
Normal file
@@ -0,0 +1,3 @@
|
||||
## v0.12.0 - 2026-02-11
|
||||
### Changed
|
||||
* internal logic handling for cron webserver
|
||||
12
CHANGELOG.md
12
CHANGELOG.md
@@ -6,6 +6,18 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||
|
||||
|
||||
## v0.12.0 - 2026-02-11
|
||||
### Changed
|
||||
* internal logic handling for cron webserver
|
||||
|
||||
## v0.11.5 - 2026-02-10
|
||||
### Changed
|
||||
* Command.Type: scriptFile no longer requests psudoterminal
|
||||
|
||||
## v0.11.4 - 2026-02-01
|
||||
### Changed
|
||||
* Command.[name].output.file: now appends correctly to the beginning of file in an absolute path
|
||||
|
||||
## v0.11.3 - 2026-01-31
|
||||
### Added
|
||||
* Command: saveShellHistory for scriptFile commands over SSH
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
const versionStr = "0.11.3"
|
||||
const versionStr = "0.12.0"
|
||||
|
||||
var (
|
||||
versionCmd = &cobra.Command{
|
||||
|
||||
@@ -73,6 +73,8 @@ func (opts *ConfigOpts) Cron() {
|
||||
srv := server.NewServer(s, opts.GoCron.Port)
|
||||
// srv := server.NewServer(scheduler, 8080, server.WithTitle("My Custom Scheduler")) // with custom title if you want to customize the title of the UI (optional)
|
||||
opts.Logger.Info().Msgf("GoCron UI available at http://%s", opts.GoCron.BindAddress)
|
||||
opts.Logger.Fatal().Msg(http.ListenAndServe(opts.GoCron.BindAddress, srv.Router).Error())
|
||||
if err := http.ListenAndServe(opts.GoCron.BindAddress, srv.Router); err != nil {
|
||||
opts.Logger.Fatal().Msg(err.Error())
|
||||
}
|
||||
select {} // wait forever
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -473,7 +474,13 @@ func (command *Command) RunCmdOnHost(cmdCtxLogger zerolog.Logger, opts *ConfigOp
|
||||
// Set output writers
|
||||
var file *os.File
|
||||
if !IsHostLocal(command.Host) && command.Output.File != "" {
|
||||
command.Output.File = fmt.Sprintf("%s_%s", command.RemoteHost.Host, command.Output.File)
|
||||
if filepath.IsAbs(command.Output.File) {
|
||||
fileName := filepath.Base(command.Output.File)
|
||||
fileName = fmt.Sprintf("%s_%s", command.RemoteHost.Host, fileName)
|
||||
command.Output.File = filepath.Join(filepath.Dir(command.Output.File), fileName)
|
||||
} else {
|
||||
command.Output.File = fmt.Sprintf("%s_%s", command.RemoteHost.Host, command.Output.File)
|
||||
}
|
||||
}
|
||||
|
||||
cmdOutWriters, file, err = makeCmdOutWriters(&cmdOutBuf, command.Output.File)
|
||||
@@ -683,18 +690,17 @@ func (command *Command) runScriptFile(session *ssh.Session, cmdCtxLogger, global
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// session.Stdin = script
|
||||
session.Stdin = script
|
||||
|
||||
modes := ssh.TerminalModes{
|
||||
ssh.ECHO: 0,
|
||||
ssh.ECHOCTL: 0,
|
||||
ssh.TTY_OP_ISPEED: 14400,
|
||||
ssh.TTY_OP_OSPEED: 14400,
|
||||
}
|
||||
// modes := ssh.TerminalModes{
|
||||
// ssh.ECHO: 0,
|
||||
// ssh.ECHOCTL: 0,
|
||||
// ssh.TTY_OP_ISPEED: 14400,
|
||||
// ssh.TTY_OP_OSPEED: 14400,
|
||||
// }
|
||||
|
||||
session.RequestPty("xterm", 80, 40, modes)
|
||||
// session.RequestPty("xterm", 80, 40, modes)
|
||||
|
||||
stdin, _ := session.StdinPipe()
|
||||
stdout, stdOutErr := session.StdoutPipe()
|
||||
if stdOutErr != nil {
|
||||
return nil, fmt.Errorf("error getting stdout pipe: %w", stdOutErr)
|
||||
@@ -711,8 +717,6 @@ func (command *Command) runScriptFile(session *ssh.Session, cmdCtxLogger, global
|
||||
LogOutputToFile = true
|
||||
}
|
||||
|
||||
stdin.Write(script.Bytes())
|
||||
|
||||
stdOutput, stdoOutReadErr := io.ReadAll(stdout)
|
||||
if err := session.Wait(); err != nil {
|
||||
stdOutBuff := bytes.NewBuffer(stdOutput)
|
||||
|
||||
Reference in New Issue
Block a user