连接远程环境并交互的操作总结
第一类:直接在linux环境下输入命令模式
1)ftp username@remteip #回车之后需要输入密码
或者:ftp remoteip #回车后提示输入用户名和密码
2)sftp sftp=ssh+ftp
用法:登陆与ftp一样方式
3)ssh 它等价于sftp
用法:等同sftp
4)scp 是ssh+cp
scp local_file remote_username@remote_ip:remote_folder
将文件拷贝到远程目录下,下载则参数反过来
具体详细连接:http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html
****建议:使用ftp与ssh命令与本地环境几乎一样,不建议使用sftp
第二类:通过脚本实现连接服务器并执行命令
1.ftp:方式
###########################################################
# mv.sh
#实现向多台远程机器传输文件,并设置可执行等指令
###########################################################
#!/bin/ksh
root=root
pwd=pwd
remoteips='10.71.148.15 10.71.148.23'
for ip in $remoteips
do
ftp -in $ip<<EOF
user $root $pwd
cd /
put /user/local.txt /home/n
# 追加+R表示向文件目录下所有子文件加权限
chmod 755 local.txt
bye
EOF
done
2.expect方式: expect和bsh这些都是一样的但是执行不同不支持xshell脚本那些语句
参考: http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html
##############################################################
# mv.exp《后缀可以是.sh》
#实现向多台远程机器传输文件,但不能操作其他指令,因为你不知道
#什么时候执行完,最后出现什么
##############################################################
#!/usr/bin/expect -f
#睡眠10秒
set timeout 10
#set等价于=定义初始化
set username root
#[lindex $argv 0|1|2..] 固定格式表示从外传递进来的参数
set password [lindex $argv 0]
set hostname [lindex $argv 1]
#spawn 表示执行指令 r表示文件目录
spawn scp localfile $username@$hostname
#①这里的{}类似swich的那个
expect{
#匹配到一个直接执行然后就跳出,里面不会
"yes/no" {send "yes\r";expect "password:"; send "$pasword\n"}
"password:"{send "$password\r"}
}
#send "exit\r"
expect eof
测试:可以通过脚本循环里调用:
./mv.sh $pwd $ip
##############################################################
# 通过ssh连接实现远程服务与控制台交互
##############################################################
#!/usr/bin/expect -f
set timeout 10
set username root
set password huawei
set hostname [lindex $argv 0]
spawn ssh $username@$hostname
expect{
#①等价于 exp_continue指令表示继续向下执行相当于case没break
"yes/no" {send "yes\r";exp_continue}
"password:"{send "$password\r"}
}
#匹配控制台以#结尾输出,就执行加权指令
expect "*#"
send "chmod +x -R remotefile";
bye
expect eof
也可以通过密钥实现不需要输入密码登陆,但是多台远程就需要每个密钥
参考:http://www.linux360.com.cn/html/Linux/tutorial/0554/1392498954.html
本机:
>ssh-keygen -t rsa
#会在~/.ssh/下生成公钥和密钥
>chmod 755 ~/.ssh -R
#拷贝公钥到远程主.ssh下,并改名authorized_keys
>scp ~/.ssh/id_rsa.pub remoteip:/home/user1/.ssh/authorized_keys
只供个人参考
第一类:直接在linux环境下输入命令模式
1)ftp username@remteip #回车之后需要输入密码
或者:ftp remoteip #回车后提示输入用户名和密码
2)sftp sftp=ssh+ftp
用法:登陆与ftp一样方式
3)ssh 它等价于sftp
用法:等同sftp
4)scp 是ssh+cp
scp local_file remote_username@remote_ip:remote_folder
将文件拷贝到远程目录下,下载则参数反过来
具体详细连接:http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html
****建议:使用ftp与ssh命令与本地环境几乎一样,不建议使用sftp
第二类:通过脚本实现连接服务器并执行命令
1.ftp:方式
###########################################################
# mv.sh
#实现向多台远程机器传输文件,并设置可执行等指令
###########################################################
#!/bin/ksh
root=root
pwd=pwd
remoteips='10.71.148.15 10.71.148.23'
for ip in $remoteips
do
ftp -in $ip<<EOF
user $root $pwd
cd /
put /user/local.txt /home/n
# 追加+R表示向文件目录下所有子文件加权限
chmod 755 local.txt
bye
EOF
done
2.expect方式: expect和bsh这些都是一样的但是执行不同不支持xshell脚本那些语句
参考: http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html
##############################################################
# mv.exp《后缀可以是.sh》
#实现向多台远程机器传输文件,但不能操作其他指令,因为你不知道
#什么时候执行完,最后出现什么
##############################################################
#!/usr/bin/expect -f
#睡眠10秒
set timeout 10
#set等价于=定义初始化
set username root
#[lindex $argv 0|1|2..] 固定格式表示从外传递进来的参数
set password [lindex $argv 0]
set hostname [lindex $argv 1]
#spawn 表示执行指令 r表示文件目录
spawn scp localfile $username@$hostname
#①这里的{}类似swich的那个
expect{
#匹配到一个直接执行然后就跳出,里面不会
"yes/no" {send "yes\r";expect "password:"; send "$pasword\n"}
"password:"{send "$password\r"}
}
#send "exit\r"
expect eof
测试:可以通过脚本循环里调用:
./mv.sh $pwd $ip
##############################################################
# 通过ssh连接实现远程服务与控制台交互
##############################################################
#!/usr/bin/expect -f
set timeout 10
set username root
set password huawei
set hostname [lindex $argv 0]
spawn ssh $username@$hostname
expect{
#①等价于 exp_continue指令表示继续向下执行相当于case没break
"yes/no" {send "yes\r";exp_continue}
"password:"{send "$password\r"}
}
#匹配控制台以#结尾输出,就执行加权指令
expect "*#"
send "chmod +x -R remotefile";
bye
expect eof
也可以通过密钥实现不需要输入密码登陆,但是多台远程就需要每个密钥
参考:http://www.linux360.com.cn/html/Linux/tutorial/0554/1392498954.html
本机:
>ssh-keygen -t rsa
#会在~/.ssh/下生成公钥和密钥
>chmod 755 ~/.ssh -R
#拷贝公钥到远程主.ssh下,并改名authorized_keys
>scp ~/.ssh/id_rsa.pub remoteip:/home/user1/.ssh/authorized_keys
只供个人参考