首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将多个命令输送到套接字反向外壳(网络名称空间)

将多个命令输送到套接字反向外壳(网络名称空间)
EN

Unix & Linux用户
提问于 2020-12-13 02:36:44
回答 1查看 2.6K关注 0票数 1

我有一个bash脚本:

  1. 做一些事情
  2. 连接/打开反向外壳。
  3. 做另一件事

my-script内容:

代码语言:javascript
运行
AI代码解释
复制
#!/usr/bin/env bash

# does 'some thing'

sudo /usr/bin/nsenter --setuid 1000 --setgid 1000 --net=/var/run/netns/ns-a -- socat file:$(tty),raw,echo=0 tcp:10.10.10.1:2222

# does 'another thing'

从终端以交互方式运行此脚本停止,并为用户提供可交互的远程shell。

用例需要有一个脚本,该脚本:

  • 接受管道输入(例如HEREDOC风格)
  • 当没有管道输入时,呈现一个交互的shell。

我想要做的是在批处理文件(管道输入)和交互中使用这个脚本。

以下是我的困惑:

代码语言:javascript
运行
AI代码解释
复制
my-script <<EOCMDS
echo 1
echo 2
EOCMDS
2020/12/13 21:28:59 socat[28032] E exactly 2 addresses required (there are 4); use option "-h" for help

感谢你可能想到的任何解决方案。

更新:

这不是一个关于设置远程shell的问题。为了避免疑问,远程服务器已经安装和侦听,准备在连接上提供(bash) shell。这个问题只涉及客户端。为了进一步消除疑问,虽然与此问题无关,但实际上远程服务器并不是网络命名空间,而是本地客户端。

EN

回答 1

Unix & Linux用户

发布于 2020-12-13 13:10:04

对于反向外壳:

代码语言:javascript
运行
AI代码解释
复制
sudo /usr/bin/nsenter --setuid 1000 --setgid 1000 --net=/var/run/netns/ns-a -- socat TCP4:10.10.10.1:2222 EXEC:/bin/bash

然后在后台执行脚本:

代码语言:javascript
运行
AI代码解释
复制
./my-script &

在另一边:

代码语言:javascript
运行
AI代码解释
复制
socat -d TCP4-LISTEN:2222 STDOUT
<commands to execute>
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/624251

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文