Guangcun's Blog分享 http://blog.sciencenet.cn/u/gcshan 哥伦比亚大学访问学者,香港城市大学校董 (2011-2012)

博文

ssh 远程执行命令简介

已有 5388 次阅读 2016-9-16 11:22 |个人分类:Linux awk|系统分类:科研笔记

ubuntu10.04 server OS
命令格式
  1. ssh -p $port $user@$p 'cmd'  

  2.  

  3. $port : ssh连接端口号  

  4. $user: ssh连接用户名  

  5. $ip:ssh连接的ip地址  

  6. cmd:远程服务器需要执行的操作  


准备工作
  • 基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题)

  • cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑)


不足这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:
  • 远程服务器local2禁止root用户登录

  • 在远程服务器脚本里转换身份用expect需要send密码,这样不够安全


执行远程服务器需要sudo权限的脚本


ssh的-t参数
  1. -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终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全
命令格式
  1. ssh -t -p $port $user@$ip  'cmd'  


示例脚本
  1. #!/bin/bash  

  2.  

  3. #变量定义  

  4. ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")  

  5. user="test1"  

  6. remote_cmd="/home/test/1.sh"  

  7.  

  8. #本地通过ssh执行远程服务器的脚本  

  9. for ip in ${ip_array[*]}  

  10. do  

  11.    if [ $ip = "192.168.1.1" ]; then  

  12.        port="7777"  

  13.    else  

  14.        port="22"  

  15.    fi  

  16.    ssh -t -p $port $user@$ip "remote_cmd"  

  17. done  




https://wap.sciencenet.cn/blog-417402-1003179.html

上一篇:CityU AC2 named after Dr Li Dak-sum and Ms Yip Yio-chin
下一篇:pip for virtualenv
收藏 IP: 219.239.227.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 05:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部