123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- package main
- import (
- "encoding/hex"
- "errors"
- "github.com/tjfoc/gmsm/sm3"
- "reflect"
- )
- func main() {
- s := new(string)
- if s == nil {
- VarAssignment(s, "/home")
- }
- VarAssignment(s, "/")
- println(*s)
- }
- // VarAssignment 变量赋值
- func VarAssignment(to, from any) error {
- var oldTv, oldFv, tv, fv reflect.Value
- tv = reflect.ValueOf(to)
- fv = reflect.ValueOf(from)
- if _, ok := to.(reflect.Value); ok {
- tv = to.(reflect.Value)
- }
- if _, ok := from.(reflect.Value); ok {
- fv = from.(reflect.Value)
- }
- if _, ok := to.(*reflect.Value); ok {
- tv = *(to.(*reflect.Value))
- }
- if _, ok := from.(*reflect.Value); ok {
- fv = *(from.(*reflect.Value))
- }
- oldTv = tv
- oldFv = fv
- if tv.IsNil() {
- return errors.New("The target data cannot be nil\n")
- }
- // 判断目标变量类型是否为指针类型,非指针类型返回错误
- if tv.Kind() == reflect.Ptr {
- tv = tv.Elem()
- } else {
- return errors.New("The target variable must be of pointer type ")
- }
- if fv.Kind() == reflect.Ptr {
- fv = fv.Elem()
- }
- // 判断目标变量类型和原变量类型是否一致
- if oldTv.Type().Elem().Kind() != fv.Kind() {
- return errors.New("Inconsistent data types ")
- }
- // 判断来源变量是否为空指针,如果为空指针则直接退出
- if oldFv.IsZero() && oldFv.Kind() == reflect.Ptr {
- return nil
- }
- // 判断目标变量是否为空,如果为空则创建内存空间
- if oldTv.IsZero() {
- val := reflect.New(oldTv.Type().Elem())
- oldTv.Set(val)
- }
- oldTv.Elem().Set(fv)
- return nil
- }
- func SM3SUM(in string) string {
- sm3Sum := sm3.Sm3Sum([]byte(in))
- return hex.EncodeToString(sm3Sum)
- }
- //package main
- //
- //import (
- // "fmt"
- // "net"
- //)
- //
- //func main() {
- // netInterfaces, err := net.Interfaces()
- // if err != nil {
- // fmt.Println("net.Interfaces failed, err:", err.Error())
- // return
- // }
- //
- // for i := 0; i < len(netInterfaces); i++ {
- // if (netInterfaces[i].Flags & net.FlagUp) != 0 {
- // addrs, _ := netInterfaces[i].Addrs()
- // for _, address := range addrs {
- // if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
- // if ipnet.IP.To4() != nil {
- //// fmt.Println(netInterfaces[i].Name)
- // fmt.Println(ipnet.IP.String())
- // }
- // }
- // }
- // }
- // }
- //
- // return
- //}
- //import (
- // "fmt"
- // "github.com/gin-gonic/gin"
- // "github.com/xuri/excelize/v2"
- // "net/http"
- //)
- //
- //func main() {
- // r := gin.Default()
- // r.POST("/upload", func(c *gin.Context) {
- // file, err := c.FormFile("file") // 假设表单字段名为"file"
- // if err != nil {
- // c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
- // return
- // }
- //
- // // 保存上传的文件到本地临时目录
- // tempFile, err := file.Open()
- // if err != nil {
- // c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
- // return
- // }
- // defer tempFile.Close()
- //
- // // 使用excelize解析Excel文件
- // f, err := excelize.OpenReader(tempFile)
- // if err != nil {
- // c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to open Excel file."})
- // return
- // }
- //
- // // 示例:读取第一个工作表的第一行数据
- // sheetName := f.GetSheetName(0)
- // rows, err := f.GetRows(sheetName)
- // if err != nil {
- // c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to read rows from Excel."})
- // return
- // }
- //
- // // 处理数据,这里简单打印出来
- // for _, row := range rows {
- // fmt.Println(row)
- // }
- //
- // c.JSON(http.StatusOK, gin.H{"message": "File uploaded and parsed successfully!"})
- // })
- //
- // r.Run(":8080") // 启动服务器
- //}
- //package main
- //
- //import (
- // "os"
- // "text/template"
- //)
- //
- //type Config struct {
- // ImageURL string
- // ScriptURL string
- // ISO string
- //}
- //
- //func main() {
- // // 创建一个Config对象,用于替换模板中的字段
- // config := Config{
- // ImageURL: "http://example.com/images",
- // ScriptURL: "http://example.com/scripts",
- // ISO: "ubuntu.iso",
- // }
- //
- // // 模板字符串
- // templateStr := `#!ipxe
- //dhcp
- //
- //set base-url {{ .ImageURL }} #请替换为镜像所在的HTTP文件服务器地址
- //
- //set ks-file {{ .ScriptURL }} # 替换为你的 Kickstart 文件所在的 HTTP 服务器地址
- //
- //set iso {{.ISO}}
- //
- //kernel ${base-url}/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=${base-url} ip=dhcp ks=${ks-url} # 指定 Kickstart 文件的位置和参数
- //initrd ${base-url}/images/pxeboot/initrd.img
- //boot
- //`
- //
- // // 创建模板对象
- // tmpl, err := template.New("ipxeTemplate").Parse(templateStr)
- // if err != nil {
- // panic(err)
- // }
- // create, _ := os.Create("auto.ipxe")
- // // 执行模板并输出结果
- // if err := tmpl.Execute(create, config); err != nil {
- // panic(err)
- // }
- //}
- // func main() {
- // nums := []int{}
- // for _, num := range nums {
- // println(num)
- // }
- // }
- /*package main
- import (
- "fmt"
- "os"
- )
- // FileContent 结构体用于存储文件名和内容
- type FileContent struct {
- FileName string
- Content string
- }
- func main() {
- dir := "D:\\GolandProjects\\demo3\\demo3.8" // 替换为实际的文件夹路径
- files, err := os.ReadDir(dir)
- if err != nil {
- fmt.Println("Error reading directory:", err)
- return
- }
- var fileContents []FileContent
- for _, file := range files {
- if file.IsDir() {
- continue // 忽略文件夹
- }
- fileName := file.Name()
- filePath := dir + "/" + fileName
- content, err := os.ReadFile(filePath)
- if err != nil {
- fmt.Println("Error reading file:", err)
- continue
- }
- fileContents = append(fileContents, FileContent{
- FileName: fileName,
- Content: string(content),
- })
- }
- // 打印文件名和内容
- for _, fc := range fileContents {
- fmt.Println("File Name:", fc.FileName)
- fmt.Println("Content:", fc.Content)
- fmt.Println()
- }
- }*/
- //package main
- //
- //import (
- // "fmt"
- // "strings"
- //)
- //
- //func main() {
- // baseURL := "http://172.17.103.111:8080/file/images/ipxe/centos-min/cas.ipxe"
- // lastSlashIndex := strings.LastIndex(baseURL, "/")
- // if lastSlashIndex != -1 {
- // baseURL = baseURL[:lastSlashIndex]
- // }
- // fmt.Println(baseURL)
- //}
- //package main
- //
- //import (
- // "fmt"
- // "net"
- //)
- //
- //func main() {
- // // 获取所有网络接口
- // ifaces, err := net.Interfaces()
- // if err != nil {
- // fmt.Println("Failed to get interfaces:", err)
- // return
- // }
- //
- // // 遍历网络接口
- // for _, iface := range ifaces {
- // fmt.Printf("Interface: %s\n", iface.Name)
- //
- // // 获取接口的所有地址
- // addrs, err := iface.Addrs()
- // if err != nil {
- // fmt.Println("Failed to get interface addresses:", err)
- // continue
- // }
- //
- // // 遍历并打印每个地址
- // for _, addr := range addrs {
- // var ip net.IP
- // switch v := addr.(type) {
- // case *net.IPNet:
- // ip = v.IP
- // case *net.IPAddr:
- // ip = v.IP
- // }
- //
- // // 排除IPv6地址和回环地址
- // if ip == nil || ip.IsLoopback() {
- // continue
- // }
- //
- // // 打印IP地址和MAC地址
- // fmt.Printf(" IP: %s\tMAC: %s\n", ip.String(), iface.HardwareAddr.String())
- // }
- // }
- //}
|