forked from x/ContextOS
mac mod ssh.send
This commit is contained in:
parent
4456c45258
commit
1ad0af36cb
@ -217,7 +217,7 @@ func init() {
|
|||||||
"debug": 0,
|
"debug": 0,
|
||||||
}
|
}
|
||||||
log.slient = map[string]bool{
|
log.slient = map[string]bool{
|
||||||
"lock": true,
|
// "lock": true,
|
||||||
}
|
}
|
||||||
log.module = map[string]map[string]bool{
|
log.module = map[string]map[string]bool{
|
||||||
"log": {"cmd": true},
|
"log": {"cmd": true},
|
||||||
|
@ -482,13 +482,14 @@ func (nfs *NFS) Start(m *ctx.Message, arg ...string) bool { // {{{
|
|||||||
|
|
||||||
func() {
|
func() {
|
||||||
cmd := msg
|
cmd := msg
|
||||||
|
nsend := cmd.Option("nsend")
|
||||||
cmd.Call(func(sub *ctx.Message) *ctx.Message {
|
cmd.Call(func(sub *ctx.Message) *ctx.Message {
|
||||||
for _, v := range sub.Meta["result"] {
|
for _, v := range sub.Meta["result"] {
|
||||||
_, e := fmt.Fprintf(nfs.Writer, "result: %s\n", url.QueryEscape(v))
|
_, e := fmt.Fprintf(nfs.Writer, "result: %s\n", url.QueryEscape(v))
|
||||||
sub.Assert(e)
|
sub.Assert(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
sub.Append("nsend", sub.Option("nsend"))
|
sub.Append("nsend", nsend)
|
||||||
for _, k := range sub.Meta["append"] {
|
for _, k := range sub.Meta["append"] {
|
||||||
for _, v := range sub.Meta[k] {
|
for _, v := range sub.Meta[k] {
|
||||||
_, e := fmt.Fprintf(nfs.Writer, "%s: %s\n", k, v)
|
_, e := fmt.Fprintf(nfs.Writer, "%s: %s\n", k, v)
|
||||||
|
@ -20,7 +20,7 @@ type SSH struct {
|
|||||||
func (ssh *SSH) Spawn(m *ctx.Message, c *ctx.Context, arg ...string) ctx.Server { // {{{
|
func (ssh *SSH) Spawn(m *ctx.Message, c *ctx.Context, arg ...string) ctx.Server { // {{{
|
||||||
c.Caches = map[string]*ctx.Cache{}
|
c.Caches = map[string]*ctx.Cache{}
|
||||||
c.Configs = map[string]*ctx.Config{
|
c.Configs = map[string]*ctx.Config{
|
||||||
"domain": &ctx.Config{Name: "domain", Value: "", Help: "主机数量"},
|
"domains": &ctx.Config{Name: "domains", Value: "", Help: "主机数量"},
|
||||||
}
|
}
|
||||||
|
|
||||||
s := new(SSH)
|
s := new(SSH)
|
||||||
@ -87,14 +87,14 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
"domain": &ctx.Cache{Name: "domain", Value: "com", Help: "主机数量"},
|
"domain": &ctx.Cache{Name: "domain", Value: "com", Help: "主机数量"},
|
||||||
},
|
},
|
||||||
Configs: map[string]*ctx.Config{
|
Configs: map[string]*ctx.Config{
|
||||||
"domain": &ctx.Config{Name: "domain", Value: "com", Help: "主机数量"},
|
"domain": &ctx.Config{Name: "domain", Value: "com", Help: "主机数量"},
|
||||||
|
"domain.json": &ctx.Config{Name: "domain.json", Value: "var/domain.json", Help: "主机数量"},
|
||||||
|
"domain.png": &ctx.Config{Name: "domain.png", Value: "var/domain.png", Help: "主机数量"},
|
||||||
|
|
||||||
"route.json": &ctx.Config{Name: "route.json", Value: "var/route.json", Help: "主机数量"},
|
"type": &ctx.Config{Name: "type", Value: "terminal", Help: "主机数量"},
|
||||||
"route.png": &ctx.Config{Name: "route.png", Value: "var/route.png", Help: "主机数量"},
|
"kind": &ctx.Config{Name: "kind", Value: "terminal", Help: "主机数量"},
|
||||||
"type": &ctx.Config{Name: "type", Value: "terminal", Help: "主机数量"},
|
"name": &ctx.Config{Name: "name", Value: "vps", Help: "主机数量"},
|
||||||
"kind": &ctx.Config{Name: "kind", Value: "terminal", Help: "主机数量"},
|
"mark": &ctx.Config{Name: "mark", Value: "com", Help: "主机数量"},
|
||||||
"name": &ctx.Config{Name: "name", Value: "vps", Help: "主机数量"},
|
|
||||||
"mark": &ctx.Config{Name: "mark", Value: "com", Help: "主机数量"},
|
|
||||||
},
|
},
|
||||||
Commands: map[string]*ctx.Command{
|
Commands: map[string]*ctx.Command{
|
||||||
"listen": &ctx.Command{Name: "listen address protocol", Help: "监听连接", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"listen": &ctx.Command{Name: "listen address protocol", Help: "监听连接", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
@ -103,7 +103,6 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
sub := file.Spawn(m.Target())
|
sub := file.Spawn(m.Target())
|
||||||
sub.Start(fmt.Sprintf("host%d", Pulse.Capi("nhost", 1)), "远程主机")
|
sub.Start(fmt.Sprintf("host%d", Pulse.Capi("nhost", 1)), "远程主机")
|
||||||
m.Sessions["ssh"] = sub
|
m.Sessions["ssh"] = sub
|
||||||
// sub.Sesss("nfs").Cmd("send", "route", sub.Target().Name, m.Cap("route"))
|
|
||||||
return sub
|
return sub
|
||||||
}, m.Meta["detail"])
|
}, m.Meta["detail"])
|
||||||
}
|
}
|
||||||
@ -123,54 +122,23 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
}},
|
}},
|
||||||
"route": &ctx.Command{Name: "route", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"send": &ctx.Command{Name: "send [domain str] cmd arg...", Help: "远程执行",
|
||||||
m.Conf("route", arg[0]) // {{{
|
Formats: map[string]int{"domain": 1},
|
||||||
m.Cap("route", arg[1]+"."+arg[0])
|
|
||||||
info := map[string]string{"route": m.Cap("route")}
|
|
||||||
|
|
||||||
msg := m.Sesss("nfs")
|
|
||||||
msg.Put("option", "data", info)
|
|
||||||
msg.Cmd("json", m.Conf("route.json"))
|
|
||||||
|
|
||||||
png := m.Sesss("nfs")
|
|
||||||
png.Cmd("genqr", m.Conf("route.png"), msg.Result(0))
|
|
||||||
|
|
||||||
m.Back(m)
|
|
||||||
// }}}
|
|
||||||
}},
|
|
||||||
"who": &ctx.Command{Name: "who", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
|
||||||
aaa := m.Sesss("aaa")
|
|
||||||
if aaa != nil {
|
|
||||||
m.Echo(aaa.Cap("group"))
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
"pwd": &ctx.Command{Name: "pwd", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
|
||||||
switch len(arg) {
|
|
||||||
case 0:
|
|
||||||
m.Echo(m.Cap("domain"))
|
|
||||||
case 1:
|
|
||||||
if m.Options("nsend") {
|
|
||||||
m.Conf("domain", arg[0])
|
|
||||||
m.Echo(m.Cap("domain"))
|
|
||||||
m.Echo(".")
|
|
||||||
m.Echo(m.Conf("domain"))
|
|
||||||
} else {
|
|
||||||
m.Spawn(m.Target()).CallBack(m.Options("stdio"), func(msg *ctx.Message) *ctx.Message {
|
|
||||||
m.Conf("domain", msg.Result(2))
|
|
||||||
m.Echo(m.Cap("domain", strings.Join(msg.Meta["result"], "")))
|
|
||||||
m.Back(msg)
|
|
||||||
return nil
|
|
||||||
}, "send", "pwd", arg[0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
"send": &ctx.Command{Name: "send [route domain] cmd arg...", Help: "远程执行",
|
|
||||||
Formats: map[string]int{"route": 1},
|
|
||||||
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
if ssh, ok := m.Target().Server.(*SSH); m.Assert(ok) { // {{{
|
if ssh, ok := m.Target().Server.(*SSH); m.Assert(ok) { // {{{
|
||||||
|
|
||||||
target := strings.Split(m.Option("route"), ".")
|
target := strings.Split(m.Option("domain"), ".")
|
||||||
if len(target) == 1 && len(target[0]) == 0 {
|
name, rest := target[0], target[1:]
|
||||||
|
if name == m.Conf("domain") {
|
||||||
|
if len(target) > 1 {
|
||||||
|
name = target[1]
|
||||||
|
rest = target[2:]
|
||||||
|
} else {
|
||||||
|
name = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(rest) == 0 && len(name) == 0 {
|
||||||
if m.Options("nsend") {
|
if m.Options("nsend") {
|
||||||
msg := m.Spawn(m.Target())
|
msg := m.Spawn(m.Target())
|
||||||
msg.Cmd(arg)
|
msg.Cmd(arg)
|
||||||
@ -186,10 +154,10 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
|
|
||||||
miss := true
|
miss := true
|
||||||
m.Travel(c, func(m *ctx.Message) bool {
|
m.Travel(c, func(m *ctx.Message) bool {
|
||||||
if ssh, ok := m.Target().Server.(*SSH); ok && m.Target().Name == target[0] {
|
if ssh, ok := m.Target().Server.(*SSH); ok && m.Conf("domains") == name {
|
||||||
msg := m.Spawn(ssh.nfs)
|
msg := m.Spawn(ssh.nfs)
|
||||||
msg.Option("route", strings.Join(target[1:], "."))
|
msg.Option("domain", strings.Join(rest, "."))
|
||||||
msg.Call(func(host *ctx.Message) *ctx.Message {
|
msg.CallBack(m.Options("stdio"), func(host *ctx.Message) *ctx.Message {
|
||||||
return m.Copy(host, "result").Copy(host, "append")
|
return m.Copy(host, "result").Copy(host, "append")
|
||||||
}, "send", "send", arg)
|
}, "send", "send", arg)
|
||||||
|
|
||||||
@ -198,16 +166,53 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
return miss
|
return miss
|
||||||
})
|
})
|
||||||
|
|
||||||
if ssh, ok := c.Server.(*SSH); m.Assert(ok) && ssh.nfs != nil {
|
if miss {
|
||||||
msg := m.Spawn(ssh.nfs)
|
if ssh, ok := c.Server.(*SSH); m.Assert(ok) && ssh.nfs != nil {
|
||||||
msg.Option("route", m.Option("route"))
|
msg := m.Spawn(ssh.nfs)
|
||||||
msg.Call(func(host *ctx.Message) *ctx.Message {
|
msg.Option("domain", m.Option("domain"))
|
||||||
return m.Copy(host, "result").Copy(host, "append")
|
msg.CallBack(m.Options("stdio"), func(host *ctx.Message) *ctx.Message {
|
||||||
}, "send", "send", arg)
|
return m.Copy(host, "result").Copy(host, "append")
|
||||||
|
}, "send", "send", arg)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
}},
|
}},
|
||||||
|
"pwd": &ctx.Command{Name: "pwd", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
|
switch len(arg) { // {{{
|
||||||
|
case 0:
|
||||||
|
m.Echo(m.Cap("domain"))
|
||||||
|
case 1:
|
||||||
|
if m.Options("nsend") {
|
||||||
|
m.Conf("domains", arg[0])
|
||||||
|
m.Echo(m.Cap("domain"))
|
||||||
|
m.Echo(".")
|
||||||
|
m.Echo(m.Conf("domains"))
|
||||||
|
} else {
|
||||||
|
m.Spawn(m.Target()).CallBack(m.Options("stdio"), func(msg *ctx.Message) *ctx.Message {
|
||||||
|
m.Conf("domain", msg.Result(2))
|
||||||
|
m.Echo(m.Cap("domain", strings.Join(msg.Meta["result"], "")))
|
||||||
|
m.Back(msg)
|
||||||
|
|
||||||
|
nfs := m.Sesss("nfs")
|
||||||
|
nfs.Put("option", "data", map[string]string{"domain": m.Cap("domain")})
|
||||||
|
nfs.Cmd("json", m.Conf("domain.json"))
|
||||||
|
|
||||||
|
png := m.Sesss("nfs")
|
||||||
|
png.Cmd("genqr", m.Conf("domain.png"), m.Cap("domain"))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}, "send", "pwd", arg[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
|
}},
|
||||||
|
"who": &ctx.Command{Name: "who", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
|
aaa := m.Sesss("aaa")
|
||||||
|
if aaa != nil {
|
||||||
|
m.Echo(aaa.Cap("group"))
|
||||||
|
}
|
||||||
|
}},
|
||||||
"good": &ctx.Command{Name: "good", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"good": &ctx.Command{Name: "good", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
m.Append("share", m.Cap("share")) // {{{
|
m.Append("share", m.Cap("share")) // {{{
|
||||||
m.Append("level", m.Cap("level"))
|
m.Append("level", m.Cap("level"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user