| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package main
- import (
- "fmt"
- "os"
- "os/exec"
- "strings"
- "syscall"
- )
- // Run the given command, showing output.
- func run_command(command []string) error {
- fmt.Println(strings.Repeat("=", 64))
- fmt.Println(command)
- cmd := exec.Command(command[0], command[1:]...)
- // Connections
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- cmd.Stdin = os.Stdin
- cmd.SysProcAttr = &syscall.SysProcAttr{}
- cmd.SysProcAttr.Credential = &syscall.Credential{Uid: 0, Gid: 0}
- err := cmd.Run()
- fmt.Println(strings.Repeat("=", 50))
- if err != nil {
- fmt.Println("Did you forget to:")
- fmt.Println(" sudo chown root:root aptgrade")
- fmt.Println(" sudo chmod a+s aptgrade")
- fmt.Println("Command failed:", err)
- }
- return err
- }
- func main() {
- if os.Geteuid() != 0 {
- fmt.Println("Use `sudo install -g 0 -o 0 -m 4755 aptgrade ~/bin/aptgrade`")
- fmt.Println("This program requires SETUID.")
- os.Exit(2)
- }
- run_command([]string{"/usr/bin/apt", "update"})
- run_command([]string{"/usr/bin/apt", "upgrade", "-y"})
- fmt.Println("Done")
- }
|