我有一个在多个不同的远程redhat机器上运行的web服务.每当我想要更新服务时,我将从版本控制库(我使用perforce)同步下来用perl编写的新web服务源代码,并使用新的同步下行perl代码重新启动服务.我认为一个接一个地登录远程机器并执行一系列命令以逐个重新启动服务实在太无聊了.所以我写了一个像下面这样的bash脚本update.sh,以便“一次做一次,更新所有机器”.我将在本地计算机上运行此

shell脚本.但它似乎无法奏效.它只执行第一个命令“sudo -u webservice_username -i”,因为我可以从本地机器的命令行中查看. (下面的代码仅显示了它将如何更新远程Web服务之一.“export P4USER = myname”用于perforce客户端的使用)

#!/bin/sh

ssh myname@remotehost1 'sudo -u webservice_username -i ; export P4USER=myname; cd dir ; p4 sync ; cd bin ; ./prog --domain=config_file restart ; tail -f ../logs/service.log'

为什么我知道唯一的第一个命令被执行?好吧,因为我在本地机器上输入ssh的密码后,显示:

Your environment has been modified. Please check /tmp/webservice.env.

而它只是卡在那里.我的意思是没有回报.

正如评论员的建议,我为ssh添加了“-t”

#!/bin/sh

ssh -t myname@remotehost1 'sudo -u webservice_username -i ; export P4USER=myname; cd dir ; p4 sync ; cd bin ; ./prog --domain=config_file restart ; tail -f ../logs/service.log'

这将让本地命令行返回.但它似乎很奇怪,它不能cd到那个“dir”,它说“cd:dir:没有这样的文件或目录”它也说“p4:command not found”.所以看起来sudo -u命令执行没有任何效果,导出命令没有执行或执行没有任何效果.

详细的本地日志文件如下所示:

Your environment has been modified. Please check /tmp/dir/.env.

bash: line 0: cd: dir: No such file or directory

bash: p4: command not found

bash: line 0: cd: bin: No such file or directory

bash: ./prog: No such file or directory

tail: cannot open `../logs/service.log' for reading: No such file or directory

tail: no files remaining

linux切换机器ssh命令,linux – 如何编写一个bash shell脚本来ssh到远程机器并更改用户并导出一个env变量并执行其他命令...相关推荐

  1. Linux切换二号终端,Linux(2)RedHat7 基本命令一-终端介绍

    导语 虚拟终端和控制台 虚拟终端 控制台tty 控制台切换 实例 虚拟终端ptypts 实例-查看对应的终端号 放大缩小虚拟终端 实例-查看ssh的进程终端 shell Shell提示符 解析 Bas ...

  2. linux切换root报错,Linux用户切换到root后运行图形程序报错(*GLib-GIO-CRITICAL **)

    用su切换到root用户后,运行某些带图形的程序,会报如下错误: (ImageProc_qt:3158): GLib-GIO-CRITICAL **: g_dbus_connection_regist ...

  3. linux切换软件版本,使用Linux的alternatives命令替换选择软件的版本方法

    上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...

  4. 用SHELL脚本来防SSH和vsftpd暴力破解(第②版)

    新近刚上的FTP备份服务器,例行检查/var/log/secure日志时,发现不少sshd和vsftpd失败认证信息,很明显有人想用暴力破解工具窃取密码,所以需要编写一个安全脚本防止. 脚本需求如下: ...

  5. 用SHELL脚本来防SSH暴力破解

    由于机器已经在跑重要的业务,我又不想去升级内核,免得影响正常的网站运营,所以iptables的想法暂时告一段落;后来我又想到用HostsDeny的方法来解决这个问题,感觉这个方法还是比较繁琐,还不如自 ...

  6. 如何 SSH 到 Linux 服务器里的特定目录及执行命令?

    2019独角兽企业重金招聘Python工程师标准>>> 这种操作对于新手来讲特别常见,良许之前也是这样.在本文,老司机将带你来进行更高效的操作,只需一步即可达到你想要的效果. 而且, ...

  7. ssh远程执行命令 linux,【Linux】SSH 远程执行命令

    有时侯,利用 ssh 在本地执行远程机器的命令可以便捷地处理某些重复工作.我们希望做到: 免手工输入密码 支持执行多个命令,执行 shell 脚本 支持执行 sudo 的命令 免手工输入密码 我们可以 ...

  8. Linux命令行–基本的bash shell命令

    启动shell: /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 用户名 用户密码 用户的系统UID 用户的系统GID 用户的全名 用户 ...

  9. linux 冒号命令,linux 的空命令:(冒号)

    php里面又"空操作"这个东西,于是想一想linux的命令中是否有"空命令"这种东西,搜索一下,结果发现真的有这个东西存在 -------:) 冒号 : 就是空 ...

  10. linux看物流内核命令,Linux基础命令

    切换目录(cd命令) cd 命令,是 Change Directory 的缩写,用来切换工作目录. Linux 命令按照来源方式,可分为两种,分别是 Shell 内置命令和外部命令.所谓 Shell ...

最新文章

  1. ZOJ 3329 One Person Game 带环的概率DP
  2. centos MySQL 双机_CentOS利用Keepalived构建双主MySQL+双机热备
  3. 本地开发好的 SAP Fiori Elements 应用,如何部署到 ABAP 服务器上?
  4. halcon reduce_ocr_class_svm 缩减基于SVM的OCR分类器。
  5. 【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型
  6. SHT1x/SHT7x数字温湿度传感器驱动编写
  7. foxit phantom pdf 7.3_Jpeg to Pdf Converter 3000批量将图片转为PDF的方法
  8. Oracle期末考试总复习资料
  9. Python中Unicode字符串
  10. DW06、DW07 锂电保护IC手册电路,锂电池过充过放过流短路保护芯片电路
  11. java中的冒泡排序和交换排序
  12. java numberformat_Java NumberFormat 类的详解及实例
  13. python图书管理实训报告总结_图书管理系统实训总结
  14. 天涯即将上线自媒体平台天涯号
  15. 2017 Postgres大象会 TBase可靠性探究ppt
  16. 成功项目经理的能力提升
  17. CSS入门4 文本样式
  18. MYSQL数据库版本更新
  19. JSON树转换成线性列表(python)
  20. 物联网开发笔记(62)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:环境搭建

热门文章

  1. 浏览器滚动条默认样式改变
  2. Spring Aop中@Pointcut用法
  3. violate原理,java内存模型,可见性,cache二级内存模型
  4. Invalid ADAPTORNAME specified. Type 'imaqhwinfo' for a list of available ADAPTORNAMEs. Image acquis
  5. 32、至少列举8个常用模块都有那些?
  6. ipsec over gre与gre over ipsec
  7. 前端最佳实践(一)——DOM操作
  8. 《云计算:原理与范式》一3.2 知识经济时代的来临
  9. javascript怎么判断对象为空
  10. js动态修改onclick的响应函数后,IE无效的解决方案