ssh执行远程服务器需要sudo提权的脚本
来源:互联网 发布:手机怎么拍淘宝图片 编辑:程序博客网 时间:2024/05/14 23:09
前言
运维是件很神奇的工作,牛逼的运维很轻松可以搞定很复杂的任务,sb的运维天天时间都耗上可能也解决不了问题(ps:因为他把时间都花在了可以重复执行的事情上)
在写这篇博客之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,ubuntu10.04 server 亲测!!
ssh执行远程操作
命令格式
ssh -p $port $user@$p 'cmd'$port : ssh连接端口号$user: ssh连接用户名$ip:ssh连接的ip地址cmd:远程服务器需要执行的操作
准备工作
- 基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题)
- cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑)
不足
这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:
- 远程服务器local2禁止root用户登录
- 在远程服务器脚本里转换身份用expect需要send密码,这样不够安全
执行远程服务器需要sudo权限的脚本
ssh的-t参数
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻译一下:就是可以提供一个远程服务器的虚拟tty终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全
命令格式
ssh -t -p $port $user@$ip 'cmd'
示例脚本
#!/bin/bash#变量定义ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")user="test1"remote_cmd="/home/test/1.sh"#本地通过ssh执行远程服务器的脚本for ip in ${ip_array[*]}doif [ $ip = "192.168.1.1" ]; thenport="7777"elseport="22"fissh -t -p $port $user@$ip "remote_cmd"done
后记
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!
- ssh执行远程服务器需要sudo提权的脚本
- ssh执行远程服务器需要sudo提权的脚本
- ssh远程执行脚本
- ssh 远程执行脚本
- ssh免密码远程执行sudo命令
- 执行远程服务器脚本
- 远程执行服务器脚本
- 用SSH执行远程脚本
- Linux SSH 远程执行脚本
- 使用expect和ssh远程执行命令的脚本
- shell技巧--ssh远程执行包含nohup命令的脚本
- ssh连接远程主机执行脚本的环境变量问题
- ssh连接远程主机执行脚本的环境变量问题
- ssh连接远程主机执行脚本的环境变量问题
- ssh连接远程主机执行脚本的环境变量问题
- ssh连接远程主机执行脚本的环境变量问题
- ssh批量执行 sudo 命令 需要输入用户密码
- sudo免密和远程执行shell脚本
- KAFKA入门----第二篇
- Extjs4.0 Chart的使用
- 快速幂算法及注意事项
- mysql innodb change buffering 简单介绍
- 我算是优秀的程序员吗?
- ssh执行远程服务器需要sudo提权的脚本
- 深入浅出---理解程序接口
- Technology resources
- Oracle 分析函数的使用
- 程序员的一天规划 只用4小时编程
- H264
- Apache下配置虚拟主机的问题与总结
- MySQL中Text, MeduimText, LongText在Hibernate中的设置
- PowerDesigner 15的破解方法