java调用shell脚本的问题

mjesse88 2015-12-19 10:56:35
大神求救 本人用java调用shell脚本(Temp.sh),脚本中有这样ssh命令如下:
ssh -t $username@$hostname "mkdir -p /usr/Temp"
直接在控制台中输入sh Temp.sh 运行结果是正常的

然后用java调用
Process process = Runtime.getRuntime().exec(./Temp.sh)
却不能成功,返回错误代码为1
路径啥的都是正确的
望解答 3Q
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjesse88 2016-01-29
  • 打赏
  • 举报
回复
谢谢回复.....问题已经解决 用expect 调用ssh
qingyuan18 2015-12-22
  • 打赏
  • 举报
回复
引用 4 楼 mjesse88 的回复:
[quote=引用 3 楼 qingyuan18 的回复:] 这个脚本是远程执行ssh,如果你的用户不是root或者没有对应权限,实际上在后台是会先登录再新生成一个会话进程来执行该shell脚本,这种情况下Runtime.getRuntime().exec是不行的,因为登录后原有的进程句柄已经结束了 参考我之前整理的这个文章:http://www.ibm.com/developerworks/cn/aix/library/1107_tangqy_serverautomain/ 里面有java ssh的开源包进行该类shell脚本远程执行的方法及代码
java使用的是root用户执行的:如果有权限,不知道过程也是这样?实际上在后台是会先登录再新生成一个会话进程来执行该shell脚本[/quote] 一样的,你不是在那台机器上的JVM上跑Runtime.getRuntime().exec,远程都会新生成进程再执行,用sshgen开源框架吧
qingyuan18 2015-12-21
  • 打赏
  • 举报
回复
这个脚本是远程执行ssh,如果你的用户不是root或者没有对应权限,实际上在后台是会先登录再新生成一个会话进程来执行该shell脚本,这种情况下Runtime.getRuntime().exec是不行的,因为登录后原有的进程句柄已经结束了 参考我之前整理的这个文章:http://www.ibm.com/developerworks/cn/aix/library/1107_tangqy_serverautomain/ 里面有java ssh的开源包进行该类shell脚本远程执行的方法及代码
mjesse88 2015-12-21
  • 打赏
  • 举报
回复
引用 3 楼 qingyuan18 的回复:
这个脚本是远程执行ssh,如果你的用户不是root或者没有对应权限,实际上在后台是会先登录再新生成一个会话进程来执行该shell脚本,这种情况下Runtime.getRuntime().exec是不行的,因为登录后原有的进程句柄已经结束了 参考我之前整理的这个文章:http://www.ibm.com/developerworks/cn/aix/library/1107_tangqy_serverautomain/ 里面有java ssh的开源包进行该类shell脚本远程执行的方法及代码
java使用的是root用户执行的:如果有权限,不知道过程也是这样?实际上在后台是会先登录再新生成一个会话进程来执行该shell脚本
Professor 2015-12-20
  • 打赏
  • 举报
回复
是没有制定运行bash?
mjesse88 2015-12-20
  • 打赏
  • 举报
回复
引用 1 楼 mheeeee 的回复:
是没有制定运行bash?
这个是指chmod a+x Temp.sh? 我用java第一次调用的时候 也会出现$usrthost是否添加的输入,个人感觉可以连上远程的机器,但是不知道为什会返回1的错误代码

50,547

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧