Первая версия
This commit is contained in:
parent
3861cff35a
commit
49a3e1ace3
1 changed files with 120 additions and 0 deletions
120
main.go
Normal file
120
main.go
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetOsInfo() string {
|
||||||
|
var osInfo string
|
||||||
|
osInfoByte, err := os.ReadFile("/etc/os-release")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
osInfoStr := string(osInfoByte)
|
||||||
|
for _, envStr := range strings.Split(osInfoStr, "\n") {
|
||||||
|
envStrArr := strings.Split(envStr, "=")
|
||||||
|
if envStrArr[0] == "PRETTY_NAME" {
|
||||||
|
osInfo = envStrArr[1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return osInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetUser() string {
|
||||||
|
var user string
|
||||||
|
for _, envStr := range os.Environ() {
|
||||||
|
envStrArr := strings.Split(envStr, "=")
|
||||||
|
if envStrArr[0] == "USER" {
|
||||||
|
user = envStrArr[1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return user
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetShell() string {
|
||||||
|
var shell string
|
||||||
|
for _, envStr := range os.Environ() {
|
||||||
|
envStrArr := strings.Split(envStr, "=")
|
||||||
|
if envStrArr[0] == "SHELL" {
|
||||||
|
shell = envStrArr[1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return shell
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetKernelVersion() string {
|
||||||
|
var out strings.Builder
|
||||||
|
cmd := exec.Command("uname", "-r")
|
||||||
|
cmd.Stdout = &out
|
||||||
|
err := cmd.Run()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
return out.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetHostname() string {
|
||||||
|
hostnameByte, err := os.ReadFile("/etc/hostname")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
hostname := string(hostnameByte)
|
||||||
|
return strings.Fields(hostname)[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetUptime() string {
|
||||||
|
hostnameByte, err := os.ReadFile("/proc/uptime")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
hostname := string(hostnameByte)
|
||||||
|
return strings.Fields(hostname)[0]
|
||||||
|
}
|
||||||
|
func GetAnsiColor() string {
|
||||||
|
var ansiColor string
|
||||||
|
ansiColorByte, err := os.ReadFile("/etc/os-release")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
ansiColorStr := string(ansiColorByte)
|
||||||
|
for _, envStr := range strings.Split(ansiColorStr, "\n") {
|
||||||
|
envStrArr := strings.Split(envStr, "=")
|
||||||
|
if envStrArr[0] == "ANSI_COLOR" {
|
||||||
|
ansiColor = strings.Split(envStrArr[1], "\"")[1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ansiColor
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenBreaker(user string, hostname string) string {
|
||||||
|
var breaker strings.Builder
|
||||||
|
for i := 0; i < (len(user) + len(hostname) + 1); i++ {
|
||||||
|
fmt.Fprintf(&breaker, "=")
|
||||||
|
}
|
||||||
|
return breaker.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if runtime.GOOS != "linux" {
|
||||||
|
fmt.Println("OS not support")
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
user := GetUser()
|
||||||
|
hostname := GetHostname()
|
||||||
|
|
||||||
|
fmt.Printf("%v@%v\n", user, hostname)
|
||||||
|
fmt.Printf("\033[%vm%v\033[0m\n", GetAnsiColor(), GenBreaker(user, hostname))
|
||||||
|
fmt.Printf("OS:\t%v\n", GetOsInfo())
|
||||||
|
fmt.Printf("KERNEL:\t%v", GetKernelVersion())
|
||||||
|
fmt.Printf("SHELL:\t%v\n", GetShell())
|
||||||
|
fmt.Printf("UPTIME:\t%v\n", GetUptime())
|
||||||
|
}
|
Loading…
Reference in a new issue