位置: 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)

  • 苹果手机怎么把5g网络改成4g网络(苹果手机怎么把隐藏的app恢复到桌面)

    苹果手机怎么把5g网络改成4g网络(苹果手机怎么把隐藏的app恢复到桌面)

  • 抖音钱包怎么注销(抖音钱包怎么注销实名)

    抖音钱包怎么注销(抖音钱包怎么注销实名)

  • iphonex可以升级ios13.4.1吗(iPhonex可以升级iOS15.5)

    iphonex可以升级ios13.4.1吗(iPhonex可以升级iOS15.5)

  • 拍抖音怎么自动出歌词(拍抖音怎么自动识别歌词)

    拍抖音怎么自动出歌词(拍抖音怎么自动识别歌词)

  • 候补订单显示候补人数较少(候补订单显示候补人数较少能兑换上么)

    候补订单显示候补人数较少(候补订单显示候补人数较少能兑换上么)

  • 家庭云会员包括哪三种类型(家庭云免费会员是什么)

    家庭云会员包括哪三种类型(家庭云免费会员是什么)

  • 华为曲面屏一摔就碎(华为曲面屏摔碎在哪里修)

    华为曲面屏一摔就碎(华为曲面屏摔碎在哪里修)

  • 手机摄像头玻璃碎了可以换的吗?(手机摄像头玻璃容易刮花吗)

    手机摄像头玻璃碎了可以换的吗?(手机摄像头玻璃容易刮花吗)

  • 不是电脑的输出设备是(不是电脑的输出设备的是绘图仪)

    不是电脑的输出设备是(不是电脑的输出设备的是绘图仪)

  • 抖音注销了别人还能看见作品吗(抖音注销了别人看到是什么样子)

    抖音注销了别人还能看见作品吗(抖音注销了别人看到是什么样子)

  • cam-al00是什么型号(cam—al00)

    cam-al00是什么型号(cam—al00)

  • 怎么下载安装抖音(下载安装抖音到桌面)

    怎么下载安装抖音(下载安装抖音到桌面)

  • 丝瓜视频看不了(丝瓜视频看不了了怎么办)

    丝瓜视频看不了(丝瓜视频看不了了怎么办)

  • 笔记本电脑可以下载万能钥匙吗(笔记本电脑可以外接显卡吗?)

    笔记本电脑可以下载万能钥匙吗(笔记本电脑可以外接显卡吗?)

  • 数码摄像机的工作原理是(数码摄像机的工作原理图)

    数码摄像机的工作原理是(数码摄像机的工作原理图)

  • 手机如何把两个视频合并在一起播放(手机如何把两个视频剪辑成一个视频)

    手机如何把两个视频合并在一起播放(手机如何把两个视频剪辑成一个视频)

  • macbook a1707是哪款(macbook a1707是哪一年款)

    macbook a1707是哪款(macbook a1707是哪一年款)

  • 爱奇艺pc端怎么开弹幕(爱奇艺PC端怎么看直播)

    爱奇艺pc端怎么开弹幕(爱奇艺PC端怎么看直播)

  • u盘需要充电吗(手机u盘需要充电吗)

    u盘需要充电吗(手机u盘需要充电吗)

  • ipad怎么发邮件(ipad怎么发邮件到别人邮箱)

    ipad怎么发邮件(ipad怎么发邮件到别人邮箱)

  • 苹果11怎么设置微信美颜(苹果11怎么设置动态壁纸)

    苹果11怎么设置微信美颜(苹果11怎么设置动态壁纸)

  • realmex2pro支持NFC吗(realmex2pro支持wifi6吗)

    realmex2pro支持NFC吗(realmex2pro支持wifi6吗)

  • word密封线怎么调整(word密封线怎么弄)

    word密封线怎么调整(word密封线怎么弄)

  • 三星S5怎么启动4G无效果(三星5g如何开启)

    三星S5怎么启动4G无效果(三星5g如何开启)

  • iphone8广角镜头在哪里(苹果8plus广角镜头)

    iphone8广角镜头在哪里(苹果8plus广角镜头)

  • 怎么查看百度网盘账号(怎么查看百度网盘)

    怎么查看百度网盘账号(怎么查看百度网盘)

  • 怎么把文章做成图片(怎么把文章做成链接的方式)

    怎么把文章做成图片(怎么把文章做成链接的方式)

  • 怎样把iphone数据传到新手机(iphone怎么把数据)

    怎样把iphone数据传到新手机(iphone怎么把数据)

  • 怎样修改微信年龄(怎样修改微信年龄信息)

    怎样修改微信年龄(怎样修改微信年龄信息)

  • 小规模纳税人销售自建不动产
  • 哪些情况可免征增值税
  • 附加税申报表里怎么填写
  • 增值税普通发票和电子普通发票的区别
  • 所得税申报资产不允许为0?
  • 个税手续费发给个人怎么做账
  • 小规模公司注销时账务要如何处理
  • 理事单位和事业单位的区别
  • 公司所得税费用怎么算报多少钱
  • 如何根据资产负债表填写现金流量表
  • 运输发票抵扣进项税率
  • 发票认证当月必须抵扣吗
  • 支票结算业务流程
  • 逾期认证未抵扣的文件
  • 境内企业借外债最新政策出台
  • 货物抵扣货款分录
  • 抵扣上月留抵税额的分录
  • 企业为什么用银行承兑汇票
  • 发票票种核定怎么提交
  • 增值税普通发票税率
  • 个税提前预缴怎么入账?
  • 哪些情况下超市销售发霉食品免责
  • 全面推开营改增试点12366热点问题解答(一)
  • 汇算清缴所得税账务处理
  • 企业所得税减免税额计算公式
  • 收到退回去年增值税怎么做账
  • 运输途中发生货物丢失
  • 非关联企业无偿拆借资金企业所得税
  • 权益法下对投资者的要求
  • 小规模纳税人的增值税怎么算
  • 工商年报缴费基数是什么意思
  • 鸿蒙系统怎么隐藏应用图标
  • linux不允许root登录
  • 交际应酬性支出是什么
  • 减值测试步骤
  • php实战开发教程
  • php中的类型提示是什么
  • 轻资产并购
  • axios.interceptors.request.use简介
  • Deep Learning Tuning Playbook(深度学习调参手册中译版)
  • 视觉slam有多难
  • 消费税购置税价格一样
  • 支付贷款利息属于筹资活动吗
  • 金税盘如何读入新购电子发票?
  • 预缴城建税税率
  • 织梦怎么导入数据库
  • 接受捐赠的固定资产怎么计提折旧
  • 购买的烟酒怎么入账
  • sqlserver强制转换为字符
  • mongodb 教程
  • 企业发生的职工福利费支出,不超过工资
  • 应交增值税为负数是什么意思
  • 短期借款的核算会计分录
  • 注册公司时企业类型为什么没有自然人独资
  • 行政单位要不要税号?
  • 公司开业装修费会计分录
  • 制造费用属于哪个科目类别
  • 境外所得税税收抵免操作指南
  • 经营租赁的房屋计提折旧吗
  • 用友反结账怎么操作
  • 未收到投资款可以确认实收资本吗
  • 购建固定资产属于投资活动吗
  • 公司购买的打印机附赠给客户进项税可以抵扣吗
  • case在sql中
  • sql server储存过程的创建与使用
  • 过程要求可包括哪些内容
  • win8蓝屏代码大全
  • 删除默认操作系统
  • win7升级win8.1失败
  • 电脑照片应用使用不了
  • javaScript事件机制兼容【详细整理】
  • python3.9多线程
  • jquery移动端ui框架
  • android源码分析
  • unity全景
  • js mvvm 原理
  • input组件封装
  • javascript获取复选框的值
  • 陕西省医保缴费截止日期2024
  • 医疗机构执业许可证办理的条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设