用golang写一个从网络接收命令并执行且返回结果的程序
时间: 2023-11-26 13:03:37 浏览: 27
好的,下面是一个简单的使用 Golang 实现从网络接收命令并执行的程序,同时返回执行结果:
```go
package main
import (
"bufio"
"fmt"
"net"
"os/exec"
)
func main() {
ln, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
defer ln.Close()
for {
conn, err := ln.Accept()
if err != nil {
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
scanner := bufio.NewScanner(conn)
for scanner.Scan() {
cmd := scanner.Text()
output, err := exec.Command("sh", "-c", cmd).Output()
if err != nil {
fmt.Fprintln(conn, err.Error())
continue
}
fmt.Fprintln(conn, string(output))
}
}
```
这个程序使用 `net.Listen` 监听 TCP 端口,并通过 `ln.Accept` 接受连接。每当有一个新连接时,就会启动一个新的 goroutine 处理连接。在连接处理函数 `handleConnection` 中,我们使用 `bufio.NewScanner` 创建一个扫描器来读取客户端发送的命令。然后,我们使用 `os/exec` 包执行命令,并将命令的输出作为字符串发送回客户端。
注意:这个程序没有进行任何安全性检查,因此请不要在生产环境中使用。在实际情况中,你应该对客户端发送的命令进行严格的验证和过滤,以防止任何恶意攻击。