package main
import (
"bufio"
"encoding/json"
"fmt"
"io/ioutil"
"net"
"net/http"
"os"
"os/exec"
"strconv"
"time"
"gopkg.in/ini.v1"
)
func floattostr(input_num float64)
string
{
return
strconv.FormatFloat(input_num,
'g'
, -1, 64)
}
func getTime()
string
{
t := time.Now()
timestamp := t.Unix()
tm := time.Unix(timestamp, 0)
s_tm := tm.Format(
"2006-01-02 15:04:05"
)
return
s_tm
}
func writeip(s
string
) {
filePath :=
"./ip.log"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
if
err != nil {
fmt.Printf(
"打开文件错误= %v \n"
, err)
return
}
defer file.Close()
ip := getTime() +
" "
+ s +
"\n"
writer := bufio.NewWriter(file)
writer.WriteString(ip)
writer.Flush()
}
func getIpInfo()
string
{
var vmidIpAddr
string
var ipArr [6]
string
var innerIp =
""
var outIp =
""
addrs, err := net.InterfaceAddrs()
if
err != nil {
fmt.Println(err)
os.Exit(1)
}
j := 0
for
_, address := range addrs {
if
ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if
ipnet.IP.To4() != nil {
fmt.Println(ipnet.IP.String())
ipArr[j] = ipnet.IP.String()
fmt.Println(j)
j++
}
}
}
innerIp = ipArr[0]
outIp = ipArr[1]
fmt.Println(innerIp)
fmt.Println(outIp)
vmidIpAddr =
"inner_ip="
+ innerIp +
"&outer_ip="
+ outIp
writeip(vmidIpAddr)
vmidIpAddr =
"inner_ip=192.168.10.146&outer_ip=192.168.10.146"
return
vmidIpAddr
}
func main() {
var CacherIp =
""
var vmid =
""
var smb_user =
""
var smb_password =
""
var ipInfo =
""
cfg, err := ini.Load(
"cloudgame_mount.ini"
)
if
err != nil {
fmt.Printf(
"Fail to read file: %v"
, err)
os.Exit(1)
}
CacherIp = cfg.Section(
""
).Key(
"CacherIp"
).String()
smb_user = cfg.Section(
""
).Key(
"smb_user"
).String()
smb_password = cfg.Section(
""
).Key(
"smb_password"
).String()
ipInfo = getIpInfo()
if
err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var vminfo map[
string
]
interface
{}
err1 := json.Unmarshal([]
byte
(
string
(body)), &vminfo)
if
err1 != nil {
fmt.Println(err1)
}
vmid = floattostr(vminfo[
"vmid"
].(float64))
mountstr :=
"net use w: \\\\"
+ CacherIp +
"\\area_vm_data_"
+ vmid +
" "
+ smb_password +
" "
+
"/user:"
+ smb_user
fmt.Println(mountstr)
c := exec.Command(
"cmd"
,
"/C"
, mountstr)
if
err := c.Start(); err != nil {
fmt.Println(
"Error: "
, err)
}