在Ruby中用SSH跟服务器进行交流
前言
Net::SSH和Net::SCP是两个Ruby操作SSH的gem包。
Net::SSH相当于cmd,专门用于执行命令;
Net::SCP专门用于传输文件。
它们俩结合,可以做任何SSH client能做的事情。
所需 Gem
- gem ‘net-ssh’
- gem ‘net-scp’
Begin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| Net::SSH.start(MYSQL_SYNC_CONFIG["#{sequence}_server_ip"], MYSQL_SYNC_CONFIG["#{sequence}_server_user"]) do |ssh|
# 创建文件夹
ssh.exec!(
"if [ ! -d #{MYSQL_SYNC_CONFIG['endpoint_backup_path']} ]; then\n" \
"mkdir #{MYSQL_SYNC_CONFIG['endpoint_backup_path']};" \
"fi"
)
# 开始上传
ssh.scp.upload!("#{backup_sql_path}", "#{MYSQL_SYNC_CONFIG['endpoint_backup_path']}/#{backup_sql_name}")
# 客户端开始还原
ssh.exec!("mysql -u" + MYSQL_SYNC_CONFIG["#{sequence}_server_mysql_user"] +
" -p" + MYSQL_SYNC_CONFIG["#{sequence}_server_mysql_pwd"] +
" red_mansions < #{MYSQL_SYNC_CONFIG['endpoint_backup_path']}/#{backup_sql_name}")
end
|
引用
http://rubyer.me/blog/1133/
http://www.infoq.com/cn/articles/ruby-file-upload-ssh-intro
https://gist.github.com/lajunta/7305741