package main import ( "autogo/common" "autogo/dbsql" "autogo/device" "autogo/models" "autogo/monkey" "fmt" "net/http" "os/exec" "strings" "time" "github.com/imroc/req/v3" ) func main() { buglyHelper() return cmd := exec.Command("docker", "ps") output, err := cmd.Output() if err != nil { fmt.Println(err) return } lines := strings.Split(string(output), "\n") for i, line := range lines { if i == 0 { continue // skip header line } fields := strings.Fields(line) if len(fields) >= 7 { fmt.Printf("Container ID: %s, Name: %s\n", fields[0], fields[len(fields)-1]) getRuntime(fields[0]) } } fmt.Println("end") } func buglyHelper() { var rsp BuglyRsp url := `https://bugly.qq.com/v2/search?start=0&userSearchPage=%2Fv2%2Fworkbench%2Fapps&pid=2&platformId=2&date=last_7_day&sortOrder=desc&useSearchTimes=2&rows=10&sortField=matchCount&appId=447d39aea1&fsn=f0726b64-a3ac-4e0d-a89d-c9148c82a5e6` client := req.C(). SetTimeout(5 * time.Second) resp, err := client.R(). SetCookies(cookies()...). SetHeader("X-Token", "536325371"). SetHeader("Accept", "application/json;charset=utf-8"). SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36"). // SetHeader("Cookie", "ptui_loginuin=188107463; RK=vOtUmiA9WS; ptcz=d265861b48af6f48ea0f924ded6af2b654f74146c1dc4d8632cb48e67edf7484; _ga=GA1.2.1584569153.1684823271; _qpsvr_localtk=0.9318772864960871; token-skey=b9694495-0a28-882a-01f9-d038d9e43bc7; token-lifeTime=1686922095; bugly-session=s:xz-9qL2pRzO3Mz8Wu_I7Svl2SLCWJfLE.MqN7buOfwmbUlRkdLauxXaddtaS3lebknTnCdPQOmtw; referrer=eyJpdiI6IkFcLzJDUTlValNtS0lUaGRFdkg3d2pRPT0iLCJ2YWx1ZSI6Ims4YUp6cUxyZlc0N25hOEJ2QWpZUlZQa2RKc1o3N3RiRHZXVVI1MlJLZ1RrSEtaQ2VmY1BtNEhMUjg4QjJSaExnc05cLzdiaGc2SHFtOTgzdnljMmlxUjd3d0FNZWdZdFwvNjdsT2ZYaG84M21Yd25FV1N0UTJyZTd3TDBId3hiQzNhN1wvS2RTZ1ZvdVFDYStKeEIrcGNnWWs1bno3dHdjTkVWdHIrYmRYTWNUb3Z1UGVvMXdoSE50djJBZ05hZ2pXUiIsIm1hYyI6IjgwNDI0ZjI2MjI0ZDFhMDA3MjBhYjQ4MWIwYjJiZTIzY2U5YjNkZjYyNGFkNTA5NGFjN2U4Y2U3ZTQwMDVlYWQifQ==; bugly_session=eyJpdiI6IjNmQzhJamU1cUlVd08yZHdWMkpTcmc9PSIsInZhbHVlIjoiZ3dFUXZUWmZ6XC8rbTZITG1DRVdrdDUrM1p0RE5nemgzeVhJa2huYWhieVB4SVFRMnlyWFFCU2JCQVpmRHNRQjdubnhhRWVJcUd3OEdzSk1zKzF2WGt3PT0iLCJtYWMiOiIwZjc4MGFmMDk1YzUyZTQ4Zjc5MjcwMDMyNGUzNmMxYjE5MjRlNTQ2MjliMzA3NmQyMGVjODRiZDgyMDU2NGQ1In0="). SetHeader("Accept", "application/json;charset=utf-8"). SetHeader("Accept-Encoding", "gzip, deflate, br"). SetHeader("Accept-Language", "zh-CN,zh;q=0.9"). SetHeader("Connection", "keep-alive"). SetSuccessResult(&rsp). // SetResult(&rsp). Get(url) if err != nil { fmt.Println(err) return } if resp.IsErrorState() { fmt.Println(resp.StatusCode) return } fmt.Println(len(rsp.Ret.IssueList)) } func cookies() []*http.Cookie { var cookies []*http.Cookie var c1 http.Cookie c1.Name = "bugly-session" c1.Value = "s:xz-9qL2pRzO3Mz8Wu_I7Svl2SLCWJfLE.MqN7buOfwmbUlRkdLauxXaddtaS3lebknTnCdPQOmtw" cookies = append(cookies, &c1) var c3 http.Cookie c3.Name = "bugly_session" c3.Value = "eyJpdiI6IlpuTkc5aXcwRHdUR1JGdDhIUmJMbGc9PSIsInZhbHVlIjoiRTZhVmxya3R3Sjl6UzBKQjRLa0EyNXlVV0lVYlNWVnpvVWFrbzVRS0k5am9UK3Y2MHN5czc3XC9JV0ZJNCtBQkdBbW4rZFh5RmFrcWYzODhOanV0OE9BPT0iLCJtYWMiOiI2MmJlYTI2MWE0M2U4NTFlNjJhYzkwZTAyOTQ3MTgxZmYwMTc0ZGJjOGE4MTE0ZjQ1Y2VmN2I5NjJkYTk2ZGY5In0=" cookies = append(cookies, &c3) return cookies } func getRuntime(containerID string) { // 执行 docker inspect 命令获取容器创建时间 cmd := exec.Command("docker", "inspect", "-f", "{{.Created}}", containerID) output, err := cmd.Output() if err != nil { fmt.Println(err) return } // 将输出结果转换为时间格式 createdTime, err := time.Parse(time.RFC3339Nano, strings.TrimSpace(string(output))) if err != nil { fmt.Println(err) return } // 计算容器已经运行的时间 uptime := time.Since(createdTime) // 将容器运行时间转换为秒级时间戳输出 uptimeInSeconds := int64(uptime.Seconds()) fmt.Printf("Container %s has been running for %d seconds\n", containerID, uptimeInSeconds) } func sib() { if device.CheckSib() { fmt.Println("sib已安装") fmt.Println(device.GetIOSDevices()) } else { fmt.Println("sib未安装") } } func tmp1() { dbsql.DSN = dbsql.DSN_local db, err := dbsql.GetConn(dbsql.DSN) if err != nil { fmt.Println(err) return } defer dbsql.Close(db) var task models.MonkeyTask db.Last(&task) common.PushMonkeyResult(task) return // dbsql.DSN = dbsql.DSN_local // db, err := dbsql.GetConn(dbsql.DSN) // if err != nil { // fmt.Println(err) // return // } // defer dbsql.Close(db) var list []models.MonkeyTask db.Model(models.MonkeyTask{}).Order("id DESC").Find(&list) for _, v := range list { if v.PackageURL != "" { app, err := common.GetBranch(v.PackageName, v.PackageURL) if err != nil { fmt.Println(v.Id, "-", err, "||", v.PackageURL) err = nil } else { fmt.Println(v.Id, "-", app.Branch) db.Model(models.MonkeyTask{}).Where("id = ?", v.Id).Update("version", app.Version+"_"+app.VersionCode) } } } } func Dir() { err := monkey.CreateDir("files") if err != nil { fmt.Println(err) } err = monkey.CreateDir("files/1") if err != nil { fmt.Println(err) } err = monkey.CreateAndWriteFile("files/1/2.txt", []byte("hidiuniduini")) if err != nil { fmt.Println(err) } } type BuglyRsp struct { Status int `json:"status"` Msg string `json:"msg"` Ret struct { AppID string `json:"appId"` PlatformID string `json:"platformId"` IssueList []struct { IssueID int `json:"issueId"` IssueHash string `json:"issueHash"` IssueCount int `json:"issueCount"` CrashInfo struct { CrashID string `json:"crashId"` TagID int `json:"tagId"` } `json:"crashInfo"` IssueVersions []struct { Version string `json:"version"` Count int `json:"count"` DeviceCount int `json:"deviceCount"` } `json:"issueVersions"` FtName string `json:"ftName"` IssueDocMap struct { ID string `json:"id"` IssueID int `json:"issueId"` Status int `json:"status"` Count int `json:"count"` SysCount int `json:"sysCount"` ProductVersion string `json:"productVersion"` DeviceCount int `json:"deviceCount"` SysDeviceCount int `json:"sysDeviceCount"` LastUpdateTime string `json:"lastUpdateTime"` FirstUploadTime string `json:"firstUploadTime"` LastUploadTime string `json:"lastUploadTime"` ExpName string `json:"expName"` ExpFingure string `json:"expFingure"` IsSystemStack int `json:"isSystemStack"` KeyStack string `json:"keyStack"` Type string `json:"type"` AverageBattery float64 `json:"averageBattery"` AverageMemory float64 `json:"averageMemory"` AverageSD float64 `json:"averageSD"` AverageStorage float64 `json:"averageStorage"` CrossVersionIssueID int `json:"crossVersionIssueId"` VersionIssueIds []int `json:"versionIssueIds"` SubIssueVersions string `json:"subIssueVersions"` ExpMessage string `json:"expMessage"` RootCount int `json:"rootCount"` SysRootCount int `json:"sysRootCount"` ExpAddr string `json:"expAddr"` RefSdkAppID string `json:"refSdkAppId"` RefSdkIssueID string `json:"refSdkIssueId"` CrashRecordCount int `json:"crashRecordCount"` } `json:"issueDocMap"` CrossVersionIssueID int `json:"crossVersionIssueId"` EsCount int `json:"esCount"` EsDeviceCount int `json:"esDeviceCount"` } `json:"issueList"` NumFound int `json:"numFound"` CrashNums int `json:"crashNums"` AnrNums int `json:"anrNums"` ErrorNums int `json:"errorNums"` } `json:"ret"` }