-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
100 lines (85 loc) · 2.58 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// +build linux
package main
import (
"fmt"
"github.com/cloudfoundry/gosigar"
"github.com/fatih/color"
"github.com/ricochet2200/go-disk-usage/du"
"log"
"math"
"os"
"os/exec"
)
var KB = uint64(1024)
func main() {
red := color.New(color.FgRed).PrintfFunc() //Print text in red
underline := color.New(color.Bold, color.FgBlue).PrintfFunc() //Print text with underline
info := color.New(color.Bold, color.FgRed).PrintfFunc() //Print text in bold (dark) red
errortxt := "DropaFetch failed to run correctly. Aborting.\nDetails: command failed with %s\n"
mem := sigar.Mem{} //Get system memory with gosigar
mem.Get()
red("DopraFetch v2\n") // The begin. | TODO: get the information first before printing to console.
underline("- - - - - - -\n\n")
info("OS: ")
//So far, this seems to be the name of the OS and theres no way to get it from uname or other way.
cmd := exec.Command("uname", "-mrs")
cmd.Stdout = os.Stdout
err := cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("Firmware: ") //
cmd = exec.Command(`sh`, `-c`, "cat /etc/DL-Release")
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("Kernel: ")
cmd = exec.Command("uname", "-r")
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("Uptime: ") //Big thanks to Tonkku for helping me out!
cmd = exec.Command(`sh`, `-c`, "uptime | awk '{print $1}'")
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("Shell: ")
cmd = exec.Command("sh", "-c", "busybox | head -1 | cut -f1 -d'('")
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("CPU:")
cmd = exec.Command("sh", "-c", "cat /proc/cpuinfo | grep 'model name' | cut -f2 -d':'")
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("CPU Count: ")
cmd = exec.Command("sh", "-c", "cat /proc/cpuinfo | grep processor | wc -l")
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
log.Fatalf(errortxt, err)
}
info("Disk Usage: ") //I won't be using gosigar here since it didn't detected any disks.
usage := du.NewDiskUsage("/")
usagecd := du.NewDiskUsage(".")
fmt.Print(usage.Used()/(KB*KB), " / ", usage.Size()/(KB*KB), " MB (/) \n")
fmt.Print(usagecd.Used()/(KB*KB), " / ", usagecd.Size()/(KB*KB), " MB (Current Dir) \n")
info("Memory: ")
mtotal := ToFloat64(mem.Total)
mused := ToFloat64(mem.Used)
fmt.Print(math.Trunc((mused/2048)/1000), " / ", math.Trunc((mtotal/2048)/1000), " MB\n")
}
func ToFloat64(in uint64) float64 {
return float64(in)
}