ssh远程执行命令及bash工作模式
本网站相关文章:
- 远程自动化工具
- ssh 基本安装和配置
- ssh 隧道转发功能以及应用
- ssh 代理转发介绍及应用场景
- ssh 代理中使用 https 以及二级代理的介绍
- ssh 数字证书生成以及 https 原理介绍
- ftp 安装,原理,配置
- ssh 远程执行命令和 bash 工作模式
1. 远程执行
自动化库
在远程自动化工具章节中我们介绍过自动化交互工具:
- Expect
- Python 封装的 pexpect
- Python 封装的 SSH2 远程安全连接库 Paramiko
- 对 Paramiko 封装的 fabric
这些工具能够让我们非常高效的进行运维自动化工作, 比如 fabric, 本人曾经参加过爬虫开发工作并单人水平较次的负责人, 我的爬虫经验是真的菜, 哈哈. 那时候的爬虫服务器架构简单说明是这样的:
因为历史原因, 公司基础服务部对 python 相关运行生态没有非常好的支持, 比如自动化部署, 自动化发布, 日志收集等等, 所以很多东西都只能爬虫部门自己来完成, 而且爬虫这边的项目还需要考虑到香港服务器和国内服务器两个地方部署的问题, 最棘手的一个问题是 GFW 的存在, 导致香港和伤害无法进行直连从而进行数据的良好交互(实际上可以基于 docker, jenkins 等工具实现 CI, 然后通过脚本来进行半自动化 CD).
因为缺少运维部门的支持, 故而只能自己动手实现简单的半自动化部署, 半自动化发布, 半自动环境搭建自动化的工作, 此时 fabric 就非常好的实现了上述的功能, 例如:
1 | def restart_spider(conn, server_config, spidername, action, copy='Y'): |
但是, 有些时候我们往往只需要远程执行一些命令来进行测试或验证远端服务器的某些功能是否符合逻辑, 此时可以使用SSH 远程命令
就能够简单快速的达到目的.
SSH 远程
- 查看主机的磁盘使用情况
1 | # a. 通用方式 |
- 执行多个命令
1 | # a. 单行 |
- 远程执行某个脚本
1 | # a. 在远程服务器执行当前宿主机上的脚本, 其中local_test.sh并非在192.168.0.33上 |
- nohup 问题
在远程执行脚本的时候, 运维人员经常会在脚本内部编写nohup
命令来调用其他脚本, 这样会导致和手动执行脚本不一样的效果, 远程 SSH 调用nohup
不会立即退出, 而是等待脚本全部执行完毕才会退出, 此时应该采用重定向的方式来跳过这一步操作:
1 | # a. 错误方式 |
至于为何不支持 nohup, 可能是 SSH 这边对 sighup 信号的处理有问题?
bash 模式
3. 参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 狂想写作本!
评论