文章目录
1 Samba
本小节介绍借助 samba
实现 linux 服务器的文件夹和 window 本地电脑的文件夹共享,参考 linux映射磁盘或者文件夹到windows
1)安装 samba
首先在 Ubuntu 安装好 samba 一套件,具体步骤为
安装 samba:
apt-get install samba
安装 smbclient:
apt-get install smbclient
2)修改配置文件
vim /etc/samba/smb.conf
编辑 smb.conf 文件
在配置文件末尾添加
[share]
comment = Shared Folder require password
path = /home/bryant/share/
browseable = yes
available = yes
public = yes
writable = yes
force user = root
valid users = bryant, root
write list = bryant, root
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
guest ok = no
上面配置文件中, path 是要共享的文件夹目录
valid users
和 write list
中的 bryant
是自己的服务器用户名
保存后重新启动 samba
,/etc/init.d/samba restart
3)设置用户和密码
smbpasswd -a bryant
提示输入密码。
这步骤好像可以省略
4)本地设置登录
最后 windows 电脑上,右键“网上邻居”或者“我的电脑”,选择 “映射网络驱动器”
在文件夹中按如下格式输入
\\服务器ip地址]\smb.conf 配置文件中的新添加的第一行 [] 中的内容
eg,如果服务器的 ip 为 123.456.78.910,则在文件夹中填写如下内容即可
\\123.456.78.910\share
这样就建立起了一个“网络驱动器”,与服务器的 /home/bryant/share/
文件夹共享,映射成功的“网络驱动器”使用方法和本地磁盘(CDEF盘)一样
2 Linux 通过 SSH 远程 Linux
1)给 Linux 安装 OpenSSH
为了实现 SSH 功能, 你得确定你的 Linux 上有安装了 SSH 服务, 通常可能是没有安装的. 所以我们将要安装一个开源的 SSH 工具, 叫做 OpenSSH, 将你的 Linux 变成一个服务器 (就是像你访问网站一样访问你的 Linux). 在 Linux 上打开你的 Terminal, 然后输入下面这句话安装 openssh-server. sudo 是使用管理员权限的意思, 所以回车后它可能要求你输入你用户密码.
sudo apt-get install openssh-server
2)Linux SSH 去 Linux
ssh [要控制的用户名]@[它的IP地址]
eg ssh ym@xxx.xxx.xx.xx
如果连接服务器映射了端口号,则是 ssh -p [端口号] [要控制的用户名]@[它的IP地址]
eg ssh -p 44020 ym@xxx.xxx.xx.xx
确保你操控和被操控的两台电脑连接上了同一个路由器. 然后在你被操控电脑的 terminal 上输入这个获取被操控电脑的 ip 号码. ifconfig
如果它提示你没有安装 ifconfig
, 你就按它的要求安装就好. 输入下面指令就能安装. sudo apt install net-tools
安装好了后,在终端输入ifconfig
,找到以 inet
开头的字样, 这就是你在这个路由下的 ip 地址了.
3 Window 通过 SSH 远程 Linux
1)Xshell
连 Ubuntu Server 用 xshell
软件比较方便的,因为图形页面。
链接:https://pan.baidu.com/s/1ue4YGCgQnYao2VCrmN2hQQ
提取码:syqd
下载完成后,新建会话属性,在类别中选中连接
- 名称:随便填
- 主机:就是需要连接的服务器的 ip
- 端口号:端口映射号
然后选择类别中的 用户身份验证
- 用户名:linux 系统中的用户名
- 密码:用户名密码
填好之后连接成功会出现如下界面,就可以在 windows 上远程控制 Linux 系统了。
文件传输,用如下箭头所示的地方!
2)TeamViewer
这个适合连接 Ubuntu 系统(有图形页面的),去官网下载一下就行,在 windows 和 Ubuntu 系统中下相应的版本,然后通过伙伴的 ID
和 密码
连接!同样手机也可以通过这个方法连接到自己的电脑(也有许多 SSH软件可以通过手机连接到自己的电脑,在 app store 搜索 SSH 即可)!
3 云端运行
在自己的笔记本上(Linux 或者 window系统)下写好的程序运行起来太占内存,影响做其它的事情,想丢去空闲的 Linux(下面简称 Linux2) 系统上运行,怎么破?
1)Linux 写好的代码在 Linux2 上运行(局域网)
eg 如下 python 代码,命名为 1.py
import platform
a = 0
for i in range(9999):
a += i
print("Finish job, result=%i" % a)
print("This is", platform.system())
现在本地的 Linux 系统上运行,
在终端输入 python 1.py
结果如下
Finish job, result=49985001
This is Linux
再用空闲的 Linux 系统上运行,采用如下形式
ssh 用户名@Linux2的ip python < 要执行的代码在Linux中的路径
或者
ssh -p 端口号 用户名@Linux2的ip python < 要执行的代码在Linux中的路径
具体一点
ssh -p 43000 ym@202.197.66.62 python < /root/userfolder/1.py
output
Finish job, result=49985001
This is Linux
这样写就不会连接上 Linux2 了,只会让 Linux 程序在 Linux2 上运行!打工告成
2)Window 写好的代码在 Linux 上运行(局域网)
打开 cmd,cd 到程序目录,输入 python 1.py
,结果如下
Finish job, result=49985001
This is Windows
我用的是 windows 10 系统,有自带的 ssh 功能(设置->管理可选功能),安装 OpenSSH 客户端
和 OpenSSH 服务器
此时在 cmd 中输入 ssh,就可以拉
在 cmd 中,我可以成功的连接到我的 Linux
但无法把在 Linux 上运行的程序结果返回在 cmd 窗口中,很遗憾!我后来借用了 git 工具(成功把windows的程序在 linux 下运行了),git 可以自己去下载安装!!!
4 文件传输
如果是有很多的 Python 文件怎么办呢? 有时候 Python 文件是一环扣一环, 这个文件里调用了那个文件的东西. 这时我们就能先全部复制所有必须文件去 Linux 的缓存区 或者 桌面, 然后再使用 ssh 在 Linux 云端的运行传送过去的文件.
1)window to Linux
a.py
需要调用 b.py
# This is a.py
from b import inner_func
inner_func()
b.py
# This is b.py
def inner_func():
print("This is a function in b")
把 windows 中的 a.py
和 b.py
同时传入服务器的 /root/userfolder/
目录下,我在 windows 的 git 下输入如下指令
scp -r -P 44020 {a,b}.py root@202.197.66.62:/root/userfolder/
scp -r -P 端口号 源文件 Linux用户名@Linux的ip地址:目标文件夹
如果设计到 permission 的问题,请参考 linux下scp报Permission denied错误的解决
执行的话, 和上面的步骤有点不一样, 在本地用 ssh 去云端, 但是 ssh 的时候同时发送一条指令去执行 a.py
. 这条指令我们用 ""
给框起来, 说明是要发送去云端再执行的指令.
ssh -p 44020 root@202.197.66.62 "python /root/userfolder/a.py"
2)Linux to Linux
基本同 window to Linux,改下路径即可,这里不再赘述
例如,把 Linux 系统上的 file1
文件夹移动到 Linux2 file2
目录下,假设 Linux2 的端口号为 40000
,Linux2 中的用户名为 bryant
,ip 为 200.100.50.10
scp -r -P 40000 ./file1/ bryant@200.100.50.10:/file2/
5 自己的云计算, 多电脑共享你云端文件
比如要自己的 window 和 Linux 文件共享,最好两个都有图形页面!!!
参考 https://morvanzhou.github.io/tutorials/others/linux-basic/5-02-share-folder/
6 挂载
参考 linux里挂载(mount)和取消挂载(umount)命令的使用
挂载 mount
mount -t cifs /source/file/path /target/file/path -o ro, username="bryant"
例如把 /home/bryant/1 挂载到 /home/bryant/2,可以写成如下形式
mount -t cifs /home/bryant/1 /home/bryant/2 -o ro, username="bryant"
取消挂载 umount
umount /home/bryant/1
或者
umount /home/bryant/2
或者
umount /home/bryant/1 /home/bryant/2
Ps:umount 时如果显示 device busy,则表示要取消挂载的磁盘正在被使用
附录——vnc viewer
vnc viewer 里面如何复制到本地
输入
vncconfig
弹框
即可