溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux實現(xiàn)遠程控制機器的方法

發(fā)布時間:2021-03-04 14:16:39 來源:億速云 閱讀:293 作者:小新 欄目:編程語言

這篇文章主要介紹Linux實現(xiàn)遠程控制機器的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

  在Linux下進行遠程登陸的時候,總是要進行ssh輸入賬號密碼,相對比較繁瑣。而在工作中總會先從本地登陸到公司的中間機器(跳板機)然后才能登陸到線上的機器,每次操作更加繁瑣。如果從A->B可以直接進行建立相互的信任關系來解決面輸入密碼的問題。顯示情況如果A->B->C三臺機器,如果想從A直接到C只能通過B進行登錄,這樣就無法建立A->C的信任關系(這種操作主要是為了保護線上機器不能隨便登錄)。該腳本就是解決這種有多個依賴的關系。

注意事項:

  1.使用實時bashversion>=4.0,因為配置中需要使用關聯(lián)數(shù)據(jù)

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

  腳本代碼:

  #!/usr/local/bin/bash

  #@Version0.3.1

  #@filenameto

  #修復等不需要要配置跳板機的時候執(zhí)行命令,在配置跳板機位置默認填no即可

  #@Authorpemakoa@gmail.com

  #Bashversion>=4.0使用關聯(lián)數(shù)組

  #Usage:hostuserpasswdportjump_hostcommand

  #四種情況如下:

  #1.直接登錄目標機器如A

  #2.需要中間機器登陸到目標機器如C,其中B為中間機器,會先登錄B在從B登陸到C然后執(zhí)行command

  #3.直接登錄目標機器并執(zhí)行相應的命令如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

以上是“Linux實現(xiàn)遠程控制機器的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI