Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

今天刚刚考完科一,心情十分的舒畅。就在我快乐的学习CSS3的时候,一个朋友问我如何在Linux服务器上和Windows之间传递数据。我一开始想到的是开一个端口,但是很显然,这个方法有点愚蠢,容易把自己暴露在外,何况朋友也没有那个权限。那么怎么做呢?那么就使用scp命令传输文件吧!不过使用scp命令的时候需要输入密码,这就有点不灵活了。于是google了一番,找到了一个不用手动输入密码的方法。

以下代码相关内容参考自linux脚本实现scp命令自动输入密码和yes/no等确认信息,感谢作者分享技术。

那么首先需要安装一个叫做expect的包。在Arch Linux下使用如下命令:

1
sudo pacman -S expect

如果你没有sudo命令请先使用su获取root权限,再执行pacman语句。如果找不到这个包是因为你的镜像源配置有问题或者你没有开启extra仓库。

下面是代码, 具体作用请看注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

expect -c "
spawn scp -r /home/fire/newfile root@121.43.183.111:/ # 执行scp命令。这个spawn是什么意思我也不知道。

expect {
\"*assword\" # 匹配与assword有关的内容。其实就是为了匹配password啦
{
set timeout 500; # timeout,懂得都懂,就不说了
send \"a123das1\r\"; # 输入密码。在\"到\r之间输入密码
}
\"yes/no\" # 这段不用管了,是匹配yes和no的
{
send \"yes\r\"; exp_continue;}
}
expect eof"

执行:

1
sh ./auto_scp.sh  # 你的脚本名,后缀名命名成什么都没有问题,只要内容对了就行

在特定情况下,此脚本与死循环配合效果极佳。

那么本博客完。

评论



愿火焰指引你