Linux & Windows 小技巧(2)

Linux & Windows 小技巧(2)

文章内容:git over ssh、lsof 与 readelf

图源:《ソード・アート・オンライン(刀剑神域)》第一季第二集 CM

博客一直在慢速更新…之前一直忙于各种事情,学校的课、比赛、不断接触和学习新的东西,因此没什么机会静下心来好好整理、记录我学到的东西,也就没有办法一并记下我对某些问题的理解和思考。

之前一度认为,“有写博客文章的时间,还不如好好学点新的东西”。但是自从领悟到我和舍友之间记忆力和知识熟练程度的差距之后,终于肯下定决心好好写自己的博客了——我比不上他们,我真的不是那种过目不忘的人,所以只能通过不断的复习和总结才能勉强记住些东西。

有人说,初学者是“什么都不会,同时自己不知道自己会什么”,稍有学识的普通人是“自己会些东西,但是自己觉得自己会的很多”,而大神则是“自己会很多东西,但是自己觉得自己学的不多而且不知道自己已经会了什么”。

可能我还是初学者吧。

git push 反复输密码很烦?

有的时候可能会遇到一种极端情况:假设你要编写脚本,比如:自动化运维脚本。其中涉及到一些对 git 仓库的操作,而且需要密码,比如:在自动脚本中让部署机器拉取私有仓库,或是让部署机器将构建后的代码使用某个 github 账号推送到某个 git 仓库。这个时候需要用户手动输入用户名和密码,但是我们往往不能手动输入——比如公用的 docker build machine,根本不允许用户在构建过程中进行交互。

那么我们该如何将用户名和密码“固化”在 clone 的本地仓库里,免去输入用户名密码的麻烦呢?一般有两种做法:首先是手动注册一个 OAuth App,并分配权限。部署机通过此 App 对相关 Repo 进行操作。但是这样做较为复杂,而且也可能存在 Token 过期的问题。

第二种则较为简便了,只要将 clone 时的链接:

1
https://github.com/<repo owner name>/<repo name>.git

替换成如下的形式:

1
https://<your user name>:<your password>@github.com/<repo owner name>/<repo name>.git

即可以实现全程无需输入密码对该本地分支对应的远程分支进行操作。譬如,你要拉取 ObjectNF/hello-word 这个仓库,用户名是 guest,密码是 123456,则链接看起来就是这个样子:

1
https://guest:123456@github.com/ObjectNF/hello-world.git

这种方法是不安全的,因此已被GitHub废弃,但仍能在某些其他基于Git的代码托管服务提供商(比如Gitee,或者自建的Gitea)上使用。

以下介绍更为安全的替代方法——SSH Key。

登录GitHub,找到Settings -> SSH and GPG keys:

随后进行密钥的生成。启动Git Bash:

1
ssh-keygen

程序会自动生成密钥并将公钥和私钥保存至~/.ssh

随后在GitHub中添加公钥。通过cat ~/.ssh/id_rsa.pub查看公钥,点击New SSH Key,然后将命令输出粘贴到输入框里即可。

Linux 下查看文件的占用情况

lsof 是 List open files 的简称,作用是查看系统中进程占用的文件列表。比如,你想查看自己编写的程序使用了哪些文件,或者想要删除某个文件但却提示“文件被占用”的时候,就可以利用该程序进行查询。

安装:

1
sudo apt-get install lsof

结合 grep 来查找文件的占用情况:

当然,受到 Linux 哲学(“一切皆文件”)的影响,lsof 工具也可以用来查看端口占用、TCP 连接等。

查看 Linux ELF 文件详情?

前一阵子入手了一个路由器,想着在寝室放一个无线AP。然而比较不巧的是,寝室宽带并非那种可以直接拨号的 PPPoE,而是通过闪讯客户端进行软件拨号,好像还有时间匹配和心跳响应什么的。不过多亏了万能的 GitHub,可以下载到其他大神编写的用于 OpenWRT PPPoE 的 pptd 闪讯插件。

于是满心欢喜地给路由器插好线,通上电,开 SSH,照着 Repo 里面写的步骤执行。但是拨号阶段却怎么也没成功,不断提示“配置错误”。在检查完脚本、设备号、防火墙、用户名密码、配置文件和插件可执行权限都没问题的情况下,我开始怀疑起插件本身的问题来。

于是查看系统日志。果然提示“Exec format error.”,即可执行文件的格式错误。那么问题来了,我怎样才能知道该 ELF 格式的各种信息呢?这就需要 readelf 这个工具。

这样就能清楚地看到 ELF 格式的区别,简单方便。

作者

ObjectNotFound

发布于

2023-09-11

更新于

2023-09-11

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×