ssh_crawler/main.go

228 lines
4.8 KiB
Go
Raw Normal View History

2017-10-20 06:10:30 +00:00
package main
import (
"fmt"
2017-10-23 05:31:04 +00:00
"git.loafle.net/overflow/ssh_crawler/crawler"
2017-10-24 09:23:56 +00:00
"encoding/json"
2017-11-09 09:04:07 +00:00
"io/ioutil"
config "git.loafle.net/overflow/overflow_commons_go/modules/config/model"
"log"
"git.loafle.net/overflow/ssh_crawler/stat"
2017-10-20 06:10:30 +00:00
)
func main() {
2017-11-09 09:04:07 +00:00
cc := config.Config{}
2017-10-20 06:10:30 +00:00
2017-11-09 09:04:07 +00:00
data, err := ioutil.ReadFile("./config/test.json")
2017-10-20 06:10:30 +00:00
if err != nil {
2017-11-09 09:04:07 +00:00
log.Fatal(err)
2017-10-20 06:10:30 +00:00
}
2017-11-09 09:04:07 +00:00
err = json.Unmarshal(data, &cc)
if err != nil {
log.Fatal(err)
2017-10-24 09:23:56 +00:00
}
2017-11-09 09:04:07 +00:00
start(&cc)
}
2017-10-24 09:23:56 +00:00
2017-11-09 09:04:07 +00:00
func start(c *config.Config) {
2017-10-24 09:23:56 +00:00
2017-11-09 09:04:07 +00:00
ip := c.Target.Connection.Ip
port := c.Target.Connection.Port
user := c.Target.Auth["id"].(string)
pw := c.Target.Auth["pw"].(string)
keyFilePathObj := c.Target.Auth["keyFilePath"]
var keyFilePath string = ""
if keyFilePathObj != nil {
keyFilePath = keyFilePathObj.(string)
2017-10-24 09:23:56 +00:00
}
2017-11-09 09:04:07 +00:00
cr, err := crawler.New(ip, port, user, pw, keyFilePath)
2017-10-26 02:38:04 +00:00
2017-11-09 09:04:07 +00:00
if err != nil {
fmt.Println(err)
2017-10-24 09:23:56 +00:00
}
2017-11-09 09:04:07 +00:00
var inter crawler.SSHCrawlerModuler
for _, item := range c.Items {
mode := item.QueryInfo.Extend["mode"].(string)
switch mode {
case "cpu" :
inter = stat.CPUStat{}
break
case "mem" :
inter = stat.MemStat{}
break
default :
continue
}
ch := make(chan interface{})
cr.Process(inter, ch, item)
print(<-ch)
2017-10-24 09:23:56 +00:00
2017-11-09 09:04:07 +00:00
}
}
2017-10-24 09:23:56 +00:00
2017-11-09 09:04:07 +00:00
func main11() {
//const ip = "192.168.1.215"
//const port = "22"
//const user = "snoop"
//const pw = "qwe123"
//const keyFilePath = "" // /home/insanity/.ssh/id_rsa
//
//cr, err := crawler.New(ip, port, user, pw, keyFilePath)
//if err != nil {
// fmt.Println(err)
//}
//
//cpukeys := []string{
// "cpu.usage.sum",
// "cpu.usage.user",
// "cpu.usage.system",
// "cpu.usage.nice",
// "cpu.usage.idle",
// "cpu.usage.iowait",
// "cpu.usage.irq",
// "cpu.usage.softirq",
// "cpu.usage.steal",
// "cpu.usage.guest",
// "cpu.usage.gnice",
//}
//cpuCh := make(chan interface{})
//cr.CPUStat(cpuCh, cpukeys)
//print(<-cpuCh)
////Memory
//memkeys := []string {
// "mem.usage.total",
// "mem.usage.free",
// "mem.usage.available",
// "mem.usage.buffers",
// "mem.usage.cached",
// "mem.swap.usage.total",
// "mem.swap.usage.free",
// "mem.swap.usage.cached",
//}
//memCh := make(chan interface{})
//cr.MemStat(memCh, memkeys)
//print(<-memCh)
//
//
////Disk IO
//ioKeys := []string {
// "disk[0].io.device",
// "disk[0].io.readcnt",
// "disk[0].io.merged_readcnt",
// "disk[0].io.readbytes",
// "disk[0].io.readtime",
// "disk[0].io.writecnt",
// "disk[0].io.merged_writecnt",
// "disk[0].io.writebytes",
// "disk[0].io.writetime",
// "disk[0].io.iotime",
// "disk[0].io.weighted",
//
// "disk[1].io.readcnt",
// "disk[1].io.merged_readcnt",
// "disk[1].io.readbytes",
// "disk[1].io.readtime",
//}
//diskioCh := make(chan interface{})
//cr.DiskIOStat(diskioCh, ioKeys)
//print(<-diskioCh)
//
//
////Disk Free
//diskFreekeys := []string {
// "disk[0].usage.fs",
// "disk[0].usage.used",
// "disk[0].usage.available",
// "disk[0].usage.usedperc",
// "disk[0].usage.mounted",
//
// "disk[1].usage.fs",
// "disk[2].usage.fs",
//}
//diskFreeCh := make(chan interface{})
//cr.DiskFreeStat(diskFreeCh, diskFreekeys)
//print(<-diskFreeCh)
//
//
////Disk Inode Free
//diskInodeKeys := []string {
// "disk[0].inode.usage.fs",
// "disk[0].inode.usage.used",
// "disk[0].inode.usage.available",
// "disk[0].inode.usage.usedperc",
// "disk[0].inode.usage.mounted",
//
// "disk[1].inode.usage.fs",
// "disk[2].inode.usage.fs",
//}
//diskInodeFreeCh := make(chan interface{})
//cr.DiskIFreeStat(diskInodeFreeCh, diskInodeKeys)
//print(<-diskInodeFreeCh)
//
//
//
////Network
//netKeys := []string {
// "net[0].transfer.iface",
// "net[0].transfer.recv_byte",
// "net[0].transfer.recv_packet",
// "net[0].transfer.recv_err",
// "net[0].transfer.recv_drop",
// "net[0].transfer.recv_fifo",
// "net[0].transfer.recv_frame",
// "net[0].transfer.recv_compressed",
// "net[0].transfer.recv_multicast",
// "net[0].transfer.send_byte",
// "net[0].transfer.send_packet",
// "net[0].transfer.send_err",
// "net[0].transfer.send_drop",
// "net[0].transfer.send_fifo",
// "net[0].transfer.send_frame",
// "net[0].transfer.send_compressed",
// "net[0].transfer.send_multicast",
//
// "net[1].transfer.recv_packet",
// "net[1].transfer.send_compressed",
// "net[1].transfer.send_packet",
//}
//netCh := make(chan interface{})
//cr.NetworkStat(netCh, netKeys)
//print(<-netCh)
//
//
////Load Avg.
//loadCh := make(chan interface{})
//cr.LoadAvgStat(loadCh)
//print(<-loadCh)
//
////Uptime
//uptCh := make(chan interface{})
//cr.Uptime(uptCh)
//print(<-uptCh)
//
////Process (It doesn't to be a Map. will be displayed by a list)
//psCh := make(chan interface{})
//cr.ProcessStat(psCh)
//print(<-psCh)
2017-10-24 09:23:56 +00:00
}
func print(data interface{}) {
jsonData, err := json.Marshal(data)
if err != nil {
2017-11-08 02:43:25 +00:00
fmt.Errorf("%s\n", err)
2017-10-24 09:23:56 +00:00
}
2017-11-08 02:43:25 +00:00
2017-10-24 09:23:56 +00:00
fmt.Println(string(jsonData))
2017-10-23 09:08:19 +00:00
}
2017-10-25 08:37:32 +00:00