位置: IT常识 - 正文

Linux中rsh远程shell命令的使用技巧解析(linux开启远程ssh)

编辑:rootadmin
这篇文章主要介绍了Linux中rsh远程shell命令的使用技巧解析,包括一些rsh由于进程和连接数等方面问题造成的操作失败的解决方法,需要的朋友可以参考下... 16-03-11

推荐整理分享Linux中rsh远程shell命令的使用技巧解析(linux开启远程ssh),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux远程连接ssh命令,linux远程gui,linux 远程shell,linux远程gui,linux远程linux命令,linux 远程ssh,linux 远程linux,linux 远程ssh,内容如对您有帮助,希望把文章链接给更多的朋友!

rsh有两种使用模式:

rsh $host : 远程登录,启动交互式进程。rsh $host $command :远程执行命令,并显示输出。

rsh hosthostcommand

rsh $host $command的作用是:

1.在远程机器上执行命令$command2.通过网络连接(socket)重定向当前进程和远端进程的标准输入和标准输出3.远端rsh进程在远端进程结束后结束4.本地rsh进程读取远端进程的标准输出直到结束(EOF)深刻理解这个执行过程有助于理解各种“奇怪”的现象和用法。

代码如下:+ Suspended (tty input)$ rsh localhost infinite-loop &[1] + Suspended (tty input) rsh pv007 infinite-loop$ rsh -n localhost infinite-loop &# 执行正常

后台执行rsh命令时,提示了和标准输入相关的错误信息。这是因为rsh默认会把当前窗口的标准输入重定向到远端进程。 而本地rsh进程作为后台程序运行的话,标准输入被“阻塞”了。

通过-n选项制定不需要重定向标准输入(stdin)。

远端进程的执行

执行命令

代码如下:rsh somehost infinite-loop

在远端机器上查看相关进程:

代码如下:$ pstree -a -p 3353in.rshd,3353 └─csh,3363 -c infinite-loop └─infinite-loop,3632 /u/szhang/bin/infinite-loop

可以看出,远端机器上的rshd进程负责启动远端进程。而且可以看出是通过csh -c的方式启动的(这里用户的默认Shell是C Shell)。

远端进程的标准IO

检查远端进程的文件描述符:

代码如下:$ ls -l /proc/3363/fd /proc/3632/fd/proc/3363/fd:total 0lrwx------. 1 Jul 30 23:47 16 -> socket:[1184748899]lrwx------. 1 Jul 30 23:47 17 -> socket:[1184748899]l-wx------. 1 Jul 30 23:47 18 -> pipe:[1184749092]lrwx------. 1 Jul 30 23:47 19 -> socket:[1184748899]代码如下:/proc/3632/fd:total 0lrwx------. 1 Jul 30 23:47 0 -> socket:[1184748899]lrwx------. 1 Jul 30 23:47 1 -> socket:[1184748899]l-wx------. 1 Jul 30 23:47 2 -> pipe:[1184749092]

可以看出远端里程的标准输入输出是被重定向到socket上的:

1.stdin 和 stdout 共享一个socket连接2.stderr 则通过一个pipe重定向(重定向到stdout ???)3.rsh 的返回值

rsh程序自身的返回值表明的是rsh自身的运行状况,而不是远端进程的返回值。

获得远端进程的返回值

代码如下:# 远端是C Shell$ rsh $host "$command ; echo $status"代码如下:# 远端是Bash Shell$ rsh $host "$command ; echo $?"代码如下:# 远端Shell类型不确定$ rsh $host "sh -c '$command ; echo $?'"

启动远端进程所用的Shell

由于用于启动远端进程的Shell类型是未知的,而有些操作的语法在不同Shell里是不同的。

比如输入输出重定向、命令返回值等。

解决该问题的方法之一是通过明确指定的Shell来启动真正需要的里程。比如:

代码如下:# 不确定远端Shell的类型,显式通过Bash Shell来启动需要的进程$ rsh -n $host "sh -c '$command > /dev/null 2>&1'"

另一种思路,则是通过一个wrapper程序来启动真正的命令。

Linux中rsh远程shell命令的使用技巧解析(linux开启远程ssh)

通过rsh在远端执行后台进程

想在远端机器上执行后台进程。命令rsh $host "$command &"是不起作用的,会导致本地的rsh进程不能结束。

背后的原因应该是,$command的标准输入输出通常仍然绑定在rsh连接的socket上,从而导致本地的rsh进程无法读取到文件结束符EOF。

知道了原因就知道该怎么办了,关键是关闭后台进程续定在rsh连接上的标准输入输出。

代码如下:# 如果远端Shell是C Shell$ rsh -n $host "$command >& /dev/null &"代码如下:# 如果远端Shell是Bash Shell$ rsh -n $host "$command > /dev/null 2>&1 &"代码如下:# 不确定远端Shell的类型$ rsh -n $host "sh -c '$command > /dev/null 2>&1 &'"

但上面这样重定向的办法有个缺点是不能得到任何远端进程的输出,而有时我们希望获得一些输出信息。 这时就需要远端进程能够以守护进程(daemon)的方式运行。

这种情况下,rsh命令可以简单地写作:$ rsh -n $host "$command &"

远端后台进程的内容用Tcl表示,大意如下:

代码如下:#/bin/env tclshputs "I am a background job"puts "This Can Be Seen by Remote rsh Process"close stdoutclose stderr# rsh连接到此应该结束。

puts "This Can NOT Be Seen by Remote rsh Process"更进就步,我们可以甚至忽略rsh命令中的后台运行符:$ rsh -n $host "$command"

这时远端进程需要通过fork的方式结束自己,并启动真正的后台进程(守护进程)。

rsh进程的阻塞和超时处理

在程序中调用rsh $host $command时可能由于各种奇怪的原因发生rsh进程的阻塞,这不是我们希望看到的。

我们希望设置一个超时(timeout)机制来解决这个问题。

在Tcl程序中的一种实现可以这样: TODO

TCP Connection连接数过多引起的rsh失败监控邮件显示rsh $host $command命令失败,错误提示为“poll: protocol failure in circuit setup"

怀疑是网络连接数过多所引起。

rsh $host $command 的网络连接过程

命令rsh $host连接远程主机的513端口。

命令rsh $host $command则连接远程主机的514端口,并随后发送一个本地端口号给远程主机,要求远程主机建立一个新的TCP连接到这个端口(还不清楚这个新的连接有什么作用)。然后才是传送命令和等待命令结束。

这样做的结果就是在rsh $host $command进程过多时,本地开放的端口资源被消耗完了,从而导致新的rsh $host $command失败。

这是rsh $host的使用则依然正常。

这里提到的rsh的缺陷,也是建议尽量使用ssh的原因之一。

没有完全关闭的网络连接:

在远程主机上kill掉相关的rsh进程后,会导致TCP连接没有完全关闭。

netstat命令显示CLOSE_WAIT状态,端口资源并没有释放出来。

根据配置文件/proc/sys/net/ipv4/tcp_keepalive_time显示,需要等待2个小时,那些端口才会因为超时而被真正关闭,从而释放出来。

代码如下:%> netstat -a | grep localhosttcp 0 0 localhost:933 localhost:935 CLOSE_WAIT%> cat /proc/sys/net/ipv4/tcp_keepalive_time7200 ;# in seconds. = 2 hours%> echo "net.ipv4.tcp_keepalive_time = 120" >> /etc/sysctl.con

本文链接地址:https://www.jiuchutong.com/zhishi/276967.html 转载请保留说明!

上一篇:第一启动盘引导设置将第一启动盘设置为CDROM(第一启动盘设置为u盘)

下一篇:默认网关不可用每次要修复才能用解决方法(默认网关不可用win7)

  • iqoopro支持红外线吗(iqoopro支持红外吗)

    iqoopro支持红外线吗(iqoopro支持红外吗)

  • 小米10和10pro手机壳通用吗(小米10和10pro手机膜一样吗)

    小米10和10pro手机壳通用吗(小米10和10pro手机膜一样吗)

  • 小米6相册图标不见了(小米相册图标不见了怎么办)

    小米6相册图标不见了(小米相册图标不见了怎么办)

  • iso定义的网络管理5大功能是(iso划分网络层次的基本原则)

    iso定义的网络管理5大功能是(iso划分网络层次的基本原则)

  • 红米k30可以升级miui12吗(红米k30至尊纪念版参数)

    红米k30可以升级miui12吗(红米k30至尊纪念版参数)

  • qq靓号是新号码还是代替原来的(qq靓号是新号码还是旧号)

    qq靓号是新号码还是代替原来的(qq靓号是新号码还是旧号)

  • 苹果删除照片icloud会同步删除吗(苹果删除照片icloud同步删除怎么办)

    苹果删除照片icloud会同步删除吗(苹果删除照片icloud同步删除怎么办)

  • xr的运行内存多大(xr手机运行内存多大)

    xr的运行内存多大(xr手机运行内存多大)

  • qq屏蔽此人和拉黑区别(qq屏蔽此人和拉黑去哪里能看到)

    qq屏蔽此人和拉黑区别(qq屏蔽此人和拉黑去哪里能看到)

  • 没人验证怎么登录微信(没人验证怎么登录微信2021)

    没人验证怎么登录微信(没人验证怎么登录微信2021)

  • 为什么快手同城不是本地(为什么快手同城看不到附近的人)

    为什么快手同城不是本地(为什么快手同城看不到附近的人)

  • 苹果电话打不出去可以上网(苹果电话打不出去打不进来怎么办)

    苹果电话打不出去可以上网(苹果电话打不出去打不进来怎么办)

  • 快手本地作品在哪个文件夹(快手的本地作品别人能看到吗)

    快手本地作品在哪个文件夹(快手的本地作品别人能看到吗)

  • oppo手机怎么强行关机(oppo手机怎么强制解除锁屏密码)

    oppo手机怎么强行关机(oppo手机怎么强制解除锁屏密码)

  • 华为mate30怎么截屏幕图(华为mate30怎么截图长屏幕)

    华为mate30怎么截屏幕图(华为mate30怎么截图长屏幕)

  • 苹果无线键盘怎么连接(苹果无线键盘怎么打开蓝牙)

    苹果无线键盘怎么连接(苹果无线键盘怎么打开蓝牙)

  • iphone xr设置隐藏刘海(苹果xr如何隐藏)

    iphone xr设置隐藏刘海(苹果xr如何隐藏)

  • 快手安装不了怎么办(下快手安装不了总是安装失败)

    快手安装不了怎么办(下快手安装不了总是安装失败)

  • 散瞳后看手机的危害(散瞳后看手机了怎么办)

    散瞳后看手机的危害(散瞳后看手机了怎么办)

  • sancup这是什么手机(sancup是什么手机)

    sancup这是什么手机(sancup是什么手机)

  • 手机微信如何彻底清除存储空间(手机微信如何彻底删除)

    手机微信如何彻底清除存储空间(手机微信如何彻底删除)

  • 苹果8录音功能在哪(苹果8录音功能找不到了怎么办)

    苹果8录音功能在哪(苹果8录音功能找不到了怎么办)

  • 网易云音乐怎么改手机号(网易云音乐怎么取消自动续费)

    网易云音乐怎么改手机号(网易云音乐怎么取消自动续费)

  • AIGC技术周报|图灵测试不是AGI的智力标准;SegGPT:在上下文中分割一切;ChatGPT能玩好文字游戏吗?(技术部周报怎么写)

    AIGC技术周报|图灵测试不是AGI的智力标准;SegGPT:在上下文中分割一切;ChatGPT能玩好文字游戏吗?(技术部周报怎么写)

  • 外贸企业的出口收入免征其地方水利建设基金
  • 应付职工薪酬费用的对应科目
  • 我们应该怎么做才能成功
  • 材料验收入库款项尚未支付
  • 银行贷款利息从几点计算
  • 最新个人独资企业
  • 分支机构能否随总机构认定为一般纳税人
  • 有合同未收到租金税务如何处理?
  • 停车费可以抵扣吗合法吗
  • 公司没有残疾人要交残疾人保障金吗
  • u盘中病毒了怎么格式化
  • 销售净利率范围
  • 如何在电子税务局添加开票人
  • 进项发票失控怎么办
  • win11 pin失效
  • 重建索引命令
  • 债券利息计算表
  • php网站结构
  • 企业盘盈资产开什么发票
  • ios.开发
  • DeepLabV3+:Mobilenetv2的改进以及浅层特征和深层特征的融合
  • 贝尔·菲戈尔
  • 今日元宵节图片
  • pytorch example
  • 小微企业资金数额
  • tomcat服务器在哪个位置
  • 期末结转主营业务收入负数
  • 专用发票必须按照销售方开户行及账号付款吗
  • 小企业会计准则季度报表
  • 营业税减免会计分录
  • 增值税纳税申报实训报告
  • 计提工会经费的工资总额包括哪些
  • 库存商品出库分类
  • 申请开立账户的请示
  • 个税申报信息怎么填
  • 撰写广告
  • 纳税人按照月度或者季度的实际利润额预缴有困难的
  • vs2015安装方法
  • 买房返现是什么意思
  • 出口化妆品会计怎么做账
  • 应税服务零税率是什么
  • 国家知识产权专利网
  • 软件产品销售合同范本
  • 购买展示样品是指什么
  • 当月开的票当月可以勾选抵扣吗
  • 原材料的采购成本怎么计算
  • 开发间接费用怎么计算
  • 出租使用权什么意思
  • 月末都应该计提哪些税费
  • 增值税其他免税销售额
  • 进项税额抵扣时分录
  • 什么叫临建工程
  • 会计内帐外帐的区别在哪
  • SQLServer Top语句参数化方法
  • win8桌面图标不显示
  • freebsd 配置ip
  • win造字软件
  • linux哪些方法可以查看命令的详细信息
  • vim删除^m
  • linux修改环境变量后需要重启吗
  • nodejs 获取文件名
  • 如何搭建react项目
  • 基于核心素养下的大单元教学设计
  • 怎样关闭android系统的内存不足的系统通知
  • Expand、Fasthelp、Fc命令的用法
  • 详解Javascript ES6中的箭头函数(Arrow Functions)
  • 搭建nodejs
  • node.js怎么搭建服务器
  • 如何修改android studio的下载路径
  • javascript数学函数
  • js如何使用
  • javascript基础编程
  • python调用python代码
  • unityshader
  • js鼠标框选
  • js进行表单验证的目的是什么
  • javascript instanceof 与typeof使用说明
  • 广州市地方税务局官网
  • 电子税务局密码能随便告诉别人吗
  • 税率的计算器在线计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设