婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > linux下使用ssh遠程執行命令批量導出數據庫到本地

linux下使用ssh遠程執行命令批量導出數據庫到本地

熱門標簽:申請公司400電話要注意什么 安裝外呼系統費用 聯通電話機器人怎么接 奧維互動地圖標注參數 地圖標注輻射圖案 曲阜400電話辦理 寧波智能外呼系統公司 衛星地圖標注地名 電銷機器人 劍魚

前天正在跟前端的同事調試功能。服務器開好,模擬的玩家登錄好,就在倒計時。這時突然運營的同事跑過來說要統計幾個服務器玩家的一些情況,也就是需要從幾個服的數據庫導出部分玩家的數據。好吧,我看了一下時間,11:47。心想,跟前端調試完,去吃個飯再午休一下那就下午再給吧。沒想對方來一句"就導個數據庫而已,要這么久么?",而且還是直接跟我上司說的。我嚓,好吧,我導。可問題來了,平時的統計是由php做的,批量部署這些是由運維做的。服務端完全沒有對應的工具。而且服務器是在阿里云上的,數據庫的用戶是限制了ip段登錄的,我所在的ip沒法登錄的。于是,只好終止調試,切ip,寫sql,然后用navicat手動一個個服務器導出數據到excel。

  事后想想,還是寫個腳本吧,不然以后還是會被坑的。
  從環境來看,數據庫不能直接登錄,沒法直接導出。不過可以由運維提供key通過ssh登錄到遠程服務器再將數據導出到本地。
  先配置ssh通過key登錄服務器。這里略過...

  然后就是通過ssh執行命令。先看一下ssh的幫助文檔:

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
      [-D [bind_address:]port] [-E log_file] [-e escape_char]
      [-F configfile] [-I pkcs11] [-i identity_file]
      [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
      [-O ctl_cmd] [-o option] [-p port]
      [-Q cipher | cipher-auth | mac | kex | key]
      [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
      [-w local_tun[:remote_tun]] [user@]hostname [command]

最后一項就是執行指令的。假如遠程服務器地址為180.97.33.108,開啟的ssh端口為998,ssh用戶名為xzc,然后想通過在遠程服務器上執行命令ls,那么腳本應該這么寫:

復制代碼 代碼如下:

ssh xzc@180.97.33.108 -p 998 "ls"

如果ssh的認證key已配置好,那么會把登錄后當前目錄下的文件列出來,當然第一次登錄會提示保存遠程服務器的指紋?,F在是要導出數據庫的數據,那么需要把ls命令換成導出數據庫的命令。

復制代碼 代碼如下:

echo "select * from user;" | mysql xzc_db -uxzc -pxzcpwd
#或者
mysql xzc_db -uxzc -pxzcpwd -e "select * from user"

上面兩命令都可以使用數據庫用戶xzc,密碼xzcpwd從數據庫xzc_db打印出user表,使用的是默認的本地數據庫地址localhost,默認的端口。如果不是默認,需要指定。

   登錄OK了,打印也OK了,那么下一步就是導出到文件了。這在bash也就是一個 > 的事。把上面的命令拼起來就是:

復制代碼 代碼如下:

ssh xzc@180.97.33.108 -p 998 'echo "select * from user;" | mysql xzc_db -uxzc -pxzcpwd' > user.txt

這樣就把user表導出來本地的user.txt中了。注意"> user.txt"如果放到 ''里則是在遠程服務器執行,導出的文件在遠程服務器。文件現在也有了,不過是txt,這樣交給運營不太好吧。那就導出excel吧。不過遺憾的是我查了N多資料,也找不到mysql不依賴第三方插件或工具導出原生excel的方法。而navicat導出的可是貨真價實的excel,如果用notepad++之類的文本工具打開是會亂碼的,并且導出的文件不會有編碼問題。幸好如果一個txt以tab分割的話,excel也是能認得出來的。于是把user.txt改名user.xls就可以了。但這樣做的問題是excel會按自己的方式處理內容的。比如把一個很大的數字轉換成科學記數法形式。這些都得手動去處理一下了。

  最后,就是寫成腳本批量操作了。附上我使用的腳本一個:

#!/bin/bash

# 通過ssh遠程執行遠程指令
# 需要先部署key認證,保證ssh只需要ip、port即可連接
# 如果需要和遠程服務器交互,請參考ssh的-t、-tt參數
# 如果需要反復登錄服務器執行多條指令,請使用ssh的通道重用
# 參考:http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing
# 使用通道需要注意退出通道,如"ssh github.com -O exit"或者"ssh github.com -O stop"
#                       --by coding my life

#分別設置ssh用戶名、數據庫用戶名、數據庫密碼、導出數據
SSH_USER='xzc_ssh'
DB_USER='xzc_db'
DB_PWD='xzc_db_pwd123'
EXP_PATH=export_data/

# 執行遠程命令
# $1 服務器ip
# $2 ssh端口
# $3 指令
function exec_remote_command()
{
  ssh $SSH_USER@$1 -p $2 '$3'
}

# 執行遠程sql,導出數據
# $1 服務器ip
# $2 ssh端口
# $3 指令,多個sql指令如select * from user;select * from bag;也可執行,但結果將會寫到同一個文件
# s4 服務器
# $5 導出文件
function export_remote_sql()
{
  echo export from $4 ...
  cmd="echo \"$3\" | mysql $4 -u$DB_USER -p$DB_PWD --default-character-set=utf8"

  ssh $SSH_USER@$1 -p $2 "$cmd" > $EXP_PATH$4_$5  #如果要導出到遠程服務器,將把 > $EXP_PATH$4_$5放到cmd中
}

# $1 區服名
# $2 ip
# $3 端口
function exec_sqls()
{
  cat SQLS | while read sql ; do
  
    fc=${sql:0:1}
    if [ "#" == "$fc" ]; then  #被注釋的不處理
      continue
    fi

    #sql語句中包含空格,不能再以空格來區分。最后一個空格后的是導出的文件名
    exp_file="${sql##* }"        #兩個#表示正則以最大長度匹配*和一個空格(*后面的空格),截取余下的賦值給exp_file
    sql_cmd="${sql%% $exp_file}"     #兩個%表示從右至左刪除%%以后的內容
    
    export_remote_sql $2 $3 "$sql_cmd" $1 "$exp_file"
  done
}

# 需要在當前目錄下創建服務器列表文件SERVERS,格式為"數據庫名 ip ssh端口",如"xzc_game_s99 127.0.0.1 22"
# 需要在當前目錄下創建sql命令列表文件SQLS,格式為"sql語句 導出的文件",如"select * from user; user.xls"
# 多個sql請注意用;分開,sql必須以;結束
# 文件名中不能包含空格,最終導出的文件為"數據庫名_文件名",如"xzc_game_s99_user.xls"

mkdir -p $EXP_PATH

cat SERVERS | while read server ; do

  fc=${server:0:1}
  if [ "#" == "$fc" ]; then  #被注釋的不處理
    continue
  fi

  name=`echo $server|awk '{print $1}'`
  ip=`echo $server|awk '{print $2}'`
  port=`echo $server|awk '{print $3}'`

  exec_sqls $name $ip $port
done

當前目錄下的文件如下,其中SERVERS是服務器列表,里面指定數據庫名,ip,ss端口,SQLS則指定sql指令及導出的文件名。這兩個文件里以#開頭的都不會處理:

xzc@xzc-HP-ProBook-4446s:~/桌面/remote_cmd$ ls
remote_cmd.sh SERVERS SQLS
xzc@xzc-HP-ProBook-4446s:~/桌面/remote_cmd$ cat SERVERS 
xzc_game_s99 120.0.0.99 6162
xzc_game_s91 120.0.0.91 6162
xzc_game_s92 120.0.0.92 6162
xzc_game_s93 120.0.0.93 6162
xzc_game_s94 120.0.0.94 6162
#xzc_game_s91 120.0.0.91 6162

xzc@xzc-HP-ProBook-4446s:~/桌面/remote_cmd$ cat SQLS 
#select * money from money; money.xls
select * from user; user.xls
xzc@xzc-HP-ProBook-4446s:~/桌面/remote_cmd$

到這里,腳本基本完成了要求。

您可能感興趣的文章:
  • 菜鳥學Linux命令:ssh命令(遠程登錄)
  • Linux下sshd服務及服務管理命令詳解
  • expect命令在linux下實現批量ssh免密
  • linux下ssh安裝與scp命令使用詳解
  • 在PHP中運行Linux命令并啟動SSH服務的例子
  • Linux VPS下SSH常用命令整理
  • 詳解Linux下你所不知道的7個SSH命令用法

標簽:仙桃 大慶 安康 大興安嶺 遵義 三門峽 江西 上饒

巨人網絡通訊聲明:本文標題《linux下使用ssh遠程執行命令批量導出數據庫到本地》,本文關鍵詞  linux,下,使用,ssh,遠程,執行,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《linux下使用ssh遠程執行命令批量導出數據庫到本地》相關的同類信息!
  • 本頁收集關于linux下使用ssh遠程執行命令批量導出數據庫到本地的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产日韩精品一区二区浪潮av| 日韩欧美一级二级| 国产精品欧美一区喷水| 国产suv一区二区三区88区| 精品999久久久| 美国十次综合导航| 精品国产91九色蝌蚪| 国产成人精品亚洲日本在线桃色| 欧美激情一区二区三区全黄| 99久久婷婷国产综合精品| 亚洲伦理在线精品| 亚洲欧美日韩久久精品| 色婷婷综合久久| 日韩精品午夜视频| 国产视频在线观看一区二区三区| 99久久精品国产观看| 亚洲国产aⅴ天堂久久| 日韩免费高清视频| 97久久超碰国产精品电影| 亚洲va欧美va人人爽| 2023国产精华国产精品| 91视频免费看| 久久精品国产一区二区| 国产精品免费视频网站| 色婷婷av一区二区三区大白胸| 亚洲综合无码一区二区| 在线不卡免费欧美| 狠狠久久亚洲欧美| 久久久久久9999| 波多野结衣精品在线| 一区二区三区日韩| 欧美精品在线观看播放| 亚洲国产精品自拍| 精品精品欲导航| 波多野结衣中文字幕一区二区三区 | 国产成人亚洲精品狼色在线| 久久久一区二区| 久久一夜天堂av一区二区三区| 成人av在线播放网站| 国产午夜精品在线观看| 3atv一区二区三区| 国产伦理精品不卡| 日日摸夜夜添夜夜添精品视频| 日韩欧美国产1| 欧美在线看片a免费观看| 六月丁香综合在线视频| 国产精品婷婷午夜在线观看| 欧美吻胸吃奶大尺度电影| 韩国三级电影一区二区| 亚洲美女免费在线| 精品国产免费一区二区三区四区| 成人免费毛片片v| 亚洲一区影音先锋| 国产亚洲女人久久久久毛片| 欧美亚男人的天堂| 成人午夜视频在线| 麻豆精品一区二区综合av| 中文字幕一区二区三区乱码在线 | 男男gaygay亚洲| 日本一区二区成人在线| 欧美日韩色一区| 成av人片一区二区| 日韩电影免费一区| 日本亚洲电影天堂| 一区二区三国产精华液| 久久久天堂av| 欧美精品久久久久久久久老牛影院| 国产老肥熟一区二区三区| 夜夜亚洲天天久久| 国产精品久久久久久久久免费相片| 91麻豆精品91久久久久同性| 91在线观看视频| 国产成人午夜电影网| 秋霞电影一区二区| 亚洲成人中文在线| 亚洲自拍另类综合| 国产精品理论片在线观看| 精品88久久久久88久久久| 欧美日韩精品免费| 高潮精品一区videoshd| 琪琪久久久久日韩精品| 免费观看一级特黄欧美大片| 亚洲制服欧美中文字幕中文字幕| 国产精品视频你懂的| 国产亚洲一区二区三区四区 | 亚洲欧美日韩小说| 国产精品美女www爽爽爽| 亚洲欧洲日韩女同| 中文成人综合网| 一区二区三区四区在线| 成人免费在线视频观看| 一区二区三区在线不卡| 亚洲综合免费观看高清完整版 | 国产a视频精品免费观看| 国产成人免费视频| 日韩精品专区在线| 久久久91精品国产一区二区精品 | 中文字幕在线一区免费| 亚洲另类色综合网站| 亚洲精品视频在线看| 一区二区三区四区蜜桃 | 国产日韩v精品一区二区| 久久免费精品国产久精品久久久久| 欧美挠脚心视频网站| 欧美一二三区在线| 日韩欧美亚洲国产另类| 欧美大片在线观看| 久久亚洲精精品中文字幕早川悠里 | 国产大陆亚洲精品国产| 粉嫩13p一区二区三区| 成人深夜福利app| 99re这里只有精品6| 欧美三级三级三级爽爽爽| 91精品蜜臀在线一区尤物| 精品奇米国产一区二区三区| 久久久噜噜噜久噜久久综合| 日韩一区二区在线免费观看| 国产性色一区二区| 亚洲人快播电影网| 日本中文一区二区三区| 激情深爱一区二区| 91美女蜜桃在线| 91精品久久久久久蜜臀| 精品人在线二区三区| 亚洲自拍偷拍麻豆| 久久激情五月婷婷| 99九九99九九九视频精品| 欧美日韩在线播| 久久麻豆一区二区| 亚洲免费在线观看| 久久99精品久久久久婷婷| 99天天综合性| 91精品国产欧美一区二区18| 精品成人一区二区三区| 亚洲综合在线免费观看| 久久99精品国产麻豆不卡| 成人小视频免费在线观看| 欧美日韩免费观看一区二区三区| 精品国产1区2区3区| 一区二区三区精品| 国产精品996| 欧美亚一区二区| 国产日韩av一区| 青青草国产精品97视觉盛宴| 韩国理伦片一区二区三区在线播放| 韩国av一区二区三区在线观看| 欧美午夜精品理论片a级按摩| 26uuu国产电影一区二区| 99vv1com这只有精品| 日韩午夜在线观看视频| 亚洲精品视频在线观看网站| 精品制服美女丁香| 91热门视频在线观看| 久久亚洲综合色| 奇米精品一区二区三区在线观看一| 久久se精品一区精品二区| 精品亚洲成av人在线观看| 色88888久久久久久影院野外| 26uuu另类欧美亚洲曰本| 五月天亚洲精品| 99视频一区二区| 国产欧美一区二区三区在线看蜜臀| 日韩国产精品大片| 欧美午夜影院一区| 亚洲色图第一区| 国产精品一级片在线观看| 精品卡一卡二卡三卡四在线| 亚洲成人动漫精品| 欧美综合一区二区| 亚洲欧美日韩在线不卡| a在线欧美一区| 久久久久国产精品麻豆| 狠狠色狠狠色综合系列| 精品国产免费一区二区三区四区| 日韩精品一级中文字幕精品视频免费观看| 97精品电影院| 亚洲日本欧美天堂| 成人18精品视频| 成人欧美一区二区三区小说 | 欧洲人成人精品| 一二三区精品福利视频| 日本久久精品电影| 亚洲欧洲成人精品av97| 91亚洲精华国产精华精华液| 中文字幕亚洲精品在线观看| 成人app网站| 国产精品久久夜| 91小视频在线| 亚洲综合一区二区精品导航| caoporen国产精品视频| 婷婷丁香激情综合| 欧美一卡二卡在线观看| 国产在线播精品第三| 久久人人97超碰com| 国产精品一区二区久久不卡| 国产亚洲综合在线| 色综合久久久久网| 亚洲一区电影777| 国产视频不卡一区| 99riav久久精品riav|