Linux实现远程控制机器的方法
创始人
2024-12-25 17:22:47
0次

  在Linux下进行远程登陆的时候,总是要进行ssh输入账号密码,相对比较繁琐。而在工作中总会先从本地登陆到公司的中间机器(跳板机)然后才能登陆到线上的机器,每次操作更加繁琐。如果从A->B可以直接进行建立相互的信任关系来解决面输入密码的问题。显示情况如果A->B->C三台机器,如果想从A直接到C只能通过B进行登录,这样就无法建立A->C的信任关系(这种操作主要是为了保护线上机器不能随便登录)。该脚本就是解决这种有多个依赖的关系。

注意事项:

  1.使用实时bashversion>=4.0,因为配置中需要使用关联数据

  2.如果需要全局使用直接修改autologin的名字,移动到PATH路径下即可eg:mvautologin/usrl/local/bin/to(改为自己想要使用的名字)

  脚本代码:

  #!/usr/local/bin/bash

  #@Version0.3.1

  #@filenameto

  #修复等不需要要配置跳板机的时候执行命令,在配置跳板机位置默认填no即可

  #@Authorpemakoa@gmail.com

  #Bashversion>=4.0使用关联数组

  #Usage:hostuserpasswdportjump_hostcommand

  #四种情况如下:

  #1.直接登录目标机器如A

  #2.需要中间机器登陆到目标机器如C,其中B为中间机器,会先登录B在从B登陆到C然后执行command

  #3.直接登录目标机器并执行相应的命令如D

  declare-A_server_config

  _server_config['A']="a_hosta_usera_passwda_port"

  _server_config['B']="b_hostb_userb_passwdb_port"

  _server_config['C']="c_hostc_userc_passwdc_portB'(commandeg)ls.'"

  _server_config['D']="d_hostd_userd_passwdd_portno'cd/home&&ll'"

  _config_keys=(${!_server_config[@]})

  _length=${#_server_config[@]}

  _login_server=$1

  _config_status=false

  #是否输入登陆机器

  if["$_login_server"==""];then

  echo-e"\033[40m\033[31mPleaseinputloginserver,youcanchooseonefollowslist\033[0m"

  foriin"${_config_keys[@]}";do

  echo-e"\033[41;37m$i\033[0m"

  done

  exit

  fi

  #检查登陆的机器是否配置

  foriin"${_config_keys[@]}";do

  if["$_login_server"=="$i"];then

  _config_status=true

  fi

  done

  if["${_config_status}"=="false"];then

  echo-ne"\033[40m\033[31m

  Notconfigserverinfo...

  Pleaseconfigin_server_configlike

  HostUserPasswdPortJumpCommand\033[0m"

  exit

  fi

#登陆如果配置跳板机,先登陆跳板机在登陆到目标机器

  _host=$(echo${_server_config["${_login_server}"]}|awk'{print$1}')

  _user=$(echo${_server_config["${_login_server}"]}|awk'{print$2}')

  _passwd=$(echo${_server_config["${_login_server}"]}|awk'{print$3}')

  _port=$(echo${_server_config["${_login_server}"]}|awk'{print$4}')

  _jump=$(echo${_server_config["${_login_server}"]}|awk'{print$5}')

  _command=$(echo${_server_config["${_login_server}"]}|awk-F"'"'{print$2}')

  if["${_command}"!=""];then

  _command="expect\"*]*\"

  send\"${_command}\r\""

  fi

  if["${_jump}"!=""]&&["${_jump}"!="no"];then

  _jump_host=$(echo${_server_config["${_jump}"]}|awk'{print$1}')

  _jump_user=$(echo${_server_config["${_jump}"]}|awk'{print$2}')

  _jump_passwd=$(echo${_server_config["${_jump}"]}|awk'{print$3}')

  _jump_port=$(echo${_server_config["${_jump}"]}|awk'{print$4}')

  expect-c"

  settimeout30

  spawnssh-p${_jump_port}${_jump_user}@${_jump_host}

  expect{

  \"yes/no\"{send\"yes\r\";exp_continue}

  \"assword\"{send\"${_jump_passwd}\r\"}

  }

  expect\"*]*\"

  send\"ssh-p${_port}${_user}@${_host}\r\"

  expect\"assword:\"

  send\"${_passwd}\r\"

  ${_command}

  interact"

  else

  expect-c"

  settimeout30

  spawnssh-p${_port}${_user}@${_host}

  expect{

  \"yes/no\"{send\"yes\r\";exp_continue}

  \"*assword:\"{send\"$_passwd\r\"}

  }

  ${_command}

  interact

  "

  fi

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...