• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chenexe
V2EX  ›  程序员

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

  •  
  •   chenexe · Aug 8, 2019 · 2729 views
    This topic created in 2650 days ago, the information mentioned may be changed or developed.

    使用 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 replies  •  2019-08-08 16:17:12 +08:00
    lcdtyph
    lcdtyph
    Aug 8, 2019 via iPhone
    1
    >本来就是保留字符啊,表示重定向的时候不需要转义

    你用的什么 shell ? cmd 还是 ps
    chenexe
    chenexe
    OP
    Aug 8, 2019
    2
    @lcdtyph 用的是 cmd
    加引号会报错:invalid port >: NO_DATA
    不加引号就能执行成功
    fatttt
    fatttt
    Aug 8, 2019
    3
    创建 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
    lcdtyph
    Aug 8, 2019 via iPhone❤️1
    4
    好吧我才理解 lz 的意思…
    感觉你需要的是
    cmd /c nc a.b.c.d port > xxx
    (没有 win 环境没法测试
    chenexe
    chenexe
    OP
    Aug 8, 2019
    5
    @lcdtyph cmd /c 是可以的 感谢你的帮助
    chenexe
    chenexe
    OP
    Aug 8, 2019
    6
    @fatttt 感谢你提供的方法,不过因为是用 adb forward 进行端口转发的,然后手机作为服务端用 dd 与 nc 命令发送数据到 PC,在 pc 端不用 nc 命令的话 获取文件就比较复杂了
    ysc3839
    ysc3839
    Aug 8, 2019 via Android
    7
    ">" 重定向是 shell 的功能,你要确认的是 exec.Command() 会不会启动 shell 来执行。
    从你给出的结果来看是不会的,那就得手动执行 shell。
    比如 bash -c "command"
    cmd /c "command"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1213 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
    ♥ Do have faith in what you're doing.