V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CurChen
V2EX  ›  程序员

大佬们有用过 netcat 吗,求个转义的解决办法

  •  
  •   CurChen · 2019-08-08 11:15:18 +08:00 · 1736 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 golang 的 exec.Command()时,发现它把我的参数都改成了 string 类型,其中的重定向符号 > 在执行过程中被改成了">"

    希望执行的命令:nc "127.0.0.1" "8888" > "F:\newImage\android_data.dd"

    实际执行的命令:nc "127.0.0.1" "8888" ">" "F:\newImage\android_data.dd"

    所以想能不能用转义解决这个问题,可是网上找了很久都没找到,类似 & g t 转义成 > 这样的功能

    希望大佬们支支招,在此不胜感激

    7 条回复    2019-08-08 16:17:12 +08:00
    lcdtyph
        1
    lcdtyph  
       2019-08-08 11:24:20 +08:00 via iPhone
    >本来就是保留字符啊,表示重定向的时候不需要转义

    你用的什么 shell ? cmd 还是 ps
    CurChen
        2
    CurChen  
    OP
       2019-08-08 11:26:30 +08:00
    @lcdtyph 用的是 cmd
    加引号会报错:invalid port >: NO_DATA
    不加引号就能执行成功
    fatttt
        3
    fatttt  
       2019-08-08 11:31:07 +08:00
    创建 Command 的时候,制定 cmd 的输出成 "F:\newImage\android_data.dd" 文件的 fd.
    另外,我觉得你这个用 cmd 太奇怪了.完全可以用 go 来实现你那个 nc 的功能:
    conn=net.Dial("tcp","127.0.0.1:8888")
    fd=os.Create("F:\newImage\android_data.dd")
    io.Copy(fd,conn)
    代码大概是这样
    lcdtyph
        4
    lcdtyph  
       2019-08-08 11:35:14 +08:00 via iPhone   ❤️ 1
    好吧我才理解 lz 的意思…
    感觉你需要的是
    cmd /c nc a.b.c.d port > xxx
    (没有 win 环境没法测试
    CurChen
        5
    CurChen  
    OP
       2019-08-08 14:12:49 +08:00
    @lcdtyph cmd /c 是可以的 感谢你的帮助
    CurChen
        6
    CurChen  
    OP
       2019-08-08 14:19:24 +08:00
    @fatttt 感谢你提供的方法,不过因为是用 adb forward 进行端口转发的,然后手机作为服务端用 dd 与 nc 命令发送数据到 PC,在 pc 端不用 nc 命令的话 获取文件就比较复杂了
    ysc3839
        7
    ysc3839  
       2019-08-08 16:17:12 +08:00 via Android
    ">" 重定向是 shell 的功能,你要确认的是 exec.Command() 会不会启动 shell 来执行。
    从你给出的结果来看是不会的,那就得手动执行 shell。
    比如 bash -c "command"
    cmd /c "command"
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5802 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:02 · PVG 11:02 · LAX 19:02 · JFK 22:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.