源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ssh远程执行命令方法和Shell脚本实例

  • 时间:2022-07-06 18:44 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ssh远程执行命令方法和Shell脚本实例
写这篇博客之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,ubuntu10.04 server 亲测!! [b]ssh执行远程操作 [/b]命令格式
[u]复制代码[/u] 代码如下:
ssh -p $port $user@$p 'cmd'    $port : ssh连接端口号  $user: ssh连接用户名  $ip:ssh连接的ip地址  cmd:远程服务器需要执行的操作 
[b]准备工作[/b] 基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题) cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑) [b]不足[/b] 这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制: 远程服务器local2禁止root用户登录 在远程服务器脚本里转换身份用expect需要send密码,这样不够安全 [b]ssh的-t参数[/b]
[u]复制代码[/u] 代码如下:
-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终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全 命令格式
[u]复制代码[/u] 代码如下:
ssh -t -p $port $user@$ip  'cmd' 
[b]示例脚本[/b]
[u]复制代码[/u] 代码如下:
#!/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[*]}  do      if [ $ip = "192.168.1.1" ]; then          port="7777"      else          port="22"      fi      ssh -t -p $port $user@$ip "remote_cmd"  done 
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部