Linux服务器常用命令
不管写得好坏,我也开始尝试记录一下学习的东西,分享给需要的人,直接上代码。
ssh连接服务器
1 | ssh username@address |
user是登录账户名称,本人直接是root,如果没有异常之后命令行会询问你登录密码,输入的时候不会有任何的显示,输对即可
scp文件上传代码
1 | scp filepath username@address:path |
file是要上传文件的路径,支持相对跟绝对路径,path是要上传到服务器的文件夹绝对路径,下载即交换两个参数位置,即
1 | scp username@address:path filepath |
每次登录服务器或者文件传输都需要输入密码,于是我找了两种可以免密交互方法
1.使用密钥
在客户端生成密钥
1 | ssh-keygen -t rsa -P "" |
直接回车到命令结束,会在.ssh/下生成id_rsa跟id_rsa.pub两个文件
把id_rsa.pub上传到服务器
1 | scp .ssh/id_rsa.pub root@address:/root |
在服务器上将id_rsa.pub文件内容追加到authorized_keys
1 | cd /root |
之后这个客户端跟服务器交互就免密了
这里>>表示追加,>就直接把之前的都覆盖了,因为一台服务器可以对多台客户端免密交互,
###2.使用expect解释器
先贴代码
1 | #!/usr/bin/expect |
首先第一行#!/usr/bin/expect代表linux的shebang(我也不知道为啥叫这个名字🤣),由#!开头,一般是#!/usr/bin/sh或者#!/usr/bin/bash,如果是Python脚本想要直接执行也一样需要#!usr/bin/python,不同的shebang有不同的区别,
其中有几行被我#注释掉了,原因是我的expect是交叉编译的,有点小问题,生效的spawn命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令,send即会在上一个命令中执行仿用户的操作,/r代表回车(交叉编译后的expect不需要加引号,具体看脚本报不报错),这里就自动输入的密码然后回车,最后interact命令将操作权转换到主用户,
登录只需要执行这个sh文件,如图:
(忽略我密钥权限的问题,不小心改了0777),
这种方式也是我用得多的,欢迎提交意见