Linux 命令行网络连接指南

本文旨在为 Linux 用户介绍提供关于使用命令行连接网络的方法。 本文将详细介绍利用 nmcli 工具连接 Wi-Fi 和以太网的教程,包括查看连接状态、控制 Wi-Fi、控制以太网等等。 安装 nmclinmcli 是 NetworkManager 的命令行工具,它可以用于管理和配置网络连接。如果你的 Linux 系统上没有安装 nmcli,请使用以下命令进行安装: sudo apt-get install network-manager 查看连接状态在连接网络之前,我们需要先查看网络状态。使用以下命令可以查看当前网络状态: nmcli general status 以上命令可以简写为: nmcli g # g 表示 general,默认为 status STATE:这是 NetworkManager 的当前状态。它可以是 “connected”、“connecting”、“disconnected”、“disconnecting” 或 “asleep” 等。 Connectd Connecting Disconnected Disconnecting Asleep 已连接 连接中 未连接 断连中 休眠 CONNECTIVITY:这是系统的网络连接状态。它可以是 “full”、“limited” 、“Portal” 或 “none”。 Full Limited Portal None 已联网,可上网 已联网,但不可上网 已联网,但需要认证 未联网 WIFI-HW:这是 WiFi 硬件的状态。它可以是 “enabled” 或 “disabled”。 ...

2023年04月14日 · 2 分钟 · Cassius0924

构建 Open3D 官方 Azure Kinect 示例时找不到 AzureKinect*** 的解决方法

此文章旨在帮助解决 C++ 版 Open3D 编译时找不到 AzureKinect 相关函数的问题。 问题描述在尝试构建官方Azure Kinect示例时(AzureKinectViewer.cpp、AzureKinectMKVReader.cpp和AzureKinectRecord.cpp)报错: [1/1] Linking CXX executable AzureKinectViewer FAILED: AzureKinectViewer : && /usr/bin/c++ CMakeFiles/AzureKinectViewer.dir/AzureKinectViewer.cpp.o -o AzureKinectViewer -L/usr/local/lib -L/usr/local/cuda/lib64 -Wl,-rpath,/usr/local/lib:/usr/local/cuda/lib64 /usr/lib/aarch64-linux-gnu/libk4a.so.1.4.1 /usr/local/lib/libOpen3D.so && : CMakeFiles/AzureKinectViewer.dir/AzureKinectViewer.cpp.o: In function `main': AzureKinectViewer.cpp:(.text+0x4fc): undefined reference to `open3d::io::AzureKinectSensor::ListDevices()' AzureKinectViewer.cpp:(.text+0x50c): undefined reference to `open3d::io::AzureKinectSensorConfig::AzureKinectSensorConfig()' AzureKinectViewer.cpp:(.text+0x75c): undefined reference to `open3d::io::AzureKinectSensor::AzureKinectSensor(open3d::io::AzureKinectSensorConfig const&)' AzureKinectViewer.cpp:(.text+0x76c): undefined reference to `open3d::io::AzureKinectSensor::Connect(unsigned long)' AzureKinectViewer.cpp:(.text+0x84c): undefined reference to `open3d::io::AzureKinectSensor::CaptureFrame(bool) const' AzureKinectViewer.cpp:(.text+0x93c): undefined reference to `open3d::io::AzureKinectSensor::~AzureKinectSensor()' AzureKinectViewer.cpp:(.text+0xb2c): undefined reference to `open3d::io::AzureKinectSensor::~AzureKinectSensor()' CMakeFiles/AzureKinectViewer.dir/AzureKinectViewer.cpp.o: In function `open3d::io::AzureKinectSensorConfig::~AzureKinectSensorConfig()': AzureKinectViewer.cpp:(.text._ZN6open3d2io23AzureKinectSensorConfigD2Ev[_ZN6open3d2io23AzureKinectSensorConfigD5Ev]+0xc): undefined reference to `vtable for open3d::io::AzureKinectSensorConfig' AzureKinectViewer.cpp:(.text._ZN6open3d2io23AzureKinectSensorConfigD2Ev[_ZN6open3d2io23AzureKinectSensorConfigD5Ev]+0x10): undefined reference to `vtable for open3d::io::AzureKinectSensorConfig' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. 这是因为安装Open3D时未开启Azure Kinect的支持选项。 ...

2023年04月08日 · 1 分钟 · Cassius0924

浅析 SSH 免密登录原理

SSH(Secure Shell)是一种网络协议,可以在不安全的网络中提供一种安全的加密通信方式。SSH 免密登录是指用户在登录远程主机时,无需输入密码即可完成登录,免去每次登录时输入密码的烦恼。这种方式既提高了用户的操作便捷性,又避免了使用简单密码的风险,极大地提高了登录的安全性。本文旨在以简单易懂的方式解释SSH免密登录的原理。 SSH免密登录原理非对称加密在了解SSH免密登录原理之前,我们需要先了解“非对称加密”。SSH 免密登录原理是基于非对称加密技术。 非对称加密就是指加密数据和解密数据用的是不同密钥,密钥分为加密密钥和解密密钥,将这样的两个密钥称为密钥对。 用户用加密密钥加密的数据只能用解密密钥才能解密,而且两个密钥相对独立,知道了其中的一个密钥,并不能计算出另一个密钥。因此我们可以公开其中的一个密钥,保密另一个密钥。公开的密钥称为公钥,不公开的密钥称为密钥。在 SSH 协议中加密密钥为公钥,解密密钥为私钥,这也被称为“公钥加密技术”。 因此,私钥应该妥善保管,防止泄露。如果私钥安全,那么 SSH 免密登录将是一种非常安全的登录方式。 除了提高操作便捷性和登录安全性之外,SSH 免密登录还可以减少用户输入密码的次数。这对于需要频繁登录远程主机的用户来说尤为重要。此外,SSH 免密登录还可以实现自动化脚本的编写和远程服务器的管理,从而提高工作效率。 总之,了解 SSH 免密登录的原理可以帮助用户更好地使用该功能,保证登录的安全性和便捷性。同时,用户在使用 SSH 免密登录时,也应该注意保护自己的私钥,避免私钥泄露,以确保登录的安全性。 不难猜到,与非对称加密相反的对称加密指的就是加密与解密用的是同一个密钥。此种加密方法安全性低。 免密登录流程 SSH免密登录原理基于公钥加密技术,具体步骤如下: 用户在本地生成id_rsa.pub公钥和id_rsa私钥; 命令:ssh-keygen 并且私钥只用于解密数据,公钥只用于加密数据。私钥只保存在本地,公钥复制一份到远程服务器上; 命令:ssh-copy-id 当用户通过SSH协议连接远程服务器时,会发送包含username的数据用于请求连接,服务器在接下来的操作中会使用与username相对应的公钥; 命令:ssh username@remote_host 服务器会生成一个随机数,称之为 Challenge,并将 Challenge 使用公钥加密后发送给用户; 用户使用私钥对 Challenge 进行解密; 再将解密后的数据再用 MD5 加密一遍发送回服务器; 服务器会对比原始 Chanllenge 的 MD5 值和用户发送过来的 MD5值,若一致则允许用户登录,否则拒绝登录。 使用方法 首先在本地生成一对公私钥,可以使用以下命令: ssh-keygen -t rsa 这个命令会在用户目录~下生成一个 .ssh 文件夹,里面包含私钥和公钥。 将公钥上传到远程服务器,可以使用以下命令: ssh-copy-id username@remote_host 其中,username为远程服务器的用户名,remote_host为远程服务器的IP地址或域名。 登录远程服务器时,可以使用以下命令: ssh username@remote_host 写在最后除了提高操作便捷性和登录安全性之外,SSH 免密登录还可以减少用户输入密码的次数。这对于需要频繁登录远程主机的用户来说尤为重要。此外,SSH 免密登录还可以实现自动化脚本(例如GitHub Actions)的编写和远程服务器的管理,从而提高工作效率。 ...

2023年03月28日 · 1 分钟 · Cassius0924

找不到 catkin_init_workspace 命令的解决方法

#找不到 catkin_init_workspace 命令的解决方法 本文提供了一个简单的解决方案,帮助你解决在ROS工作空间中使用catkin_init_workspace命令时出现的 command not found 的问题。 问题描述在建立 ROS 工作空间的时候发现找不到初始化工作空间命令: catkin_init_workspace 但是检查后发现明明已经安装了 ROS-melodic-catkin,应该可以用初始化命令才对: 最后在 ROS 官网找到答案,问题出在环境配置上。 解决方法我们只需要 source 一下环境配置脚本即可: source /opt/ros/melodic/setup.sh 注意:不同版本 ROS 的 setup.sh 脚本的文件路径不同。Noetic 版 ROS 的 setup.sh 脚本在 /opt/ros/noetic下。 执行以下命令可以在每次启动新的 Shell 窗口时自动的 source 这个脚本: echo "source /opt/ros/melodic/setup.sh" >> ~/.bashrc source ~/.bashrc 如果你用的是 Zsh,则执行以下命令: echo "source /opt/ros/melodic/setup.sh" >> ~/.zshrc source ~/.zshrc

2023年03月28日 · 1 分钟 · Cassius0924

Jetson nano 安装 Azure Kinect DK 指南

该项目提供了一个简单的指南,帮助用户在 NVIDIA Jetson Nano 上正确安装 Azure Kinect DK。 Jetson nano是ARM64架构,而非AMD64架构。所以环境配置起来会和AMD64架构的有所不同。 前提在开始安装 Azure Kinect DK 之前,请确保您的 Jetson Nano 满足以下要求: 版本为Ubuntu 18.04 LTS 已安装cURL 不再费文笔说明如何安装上述工具。 安装步骤第一步:配置微软软件包储存库 系统版本必须为Ubuntu 18.04,其他版本参考Microsoft 产品的 Linux 软件存储库。 依次运行下列命令: 添加微软GPG公钥: curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - 添加微软软件包源: sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod 下载最新软件包列表: sudo apt-get update 第二步:安装依赖项 依赖项需要手动安装ARM64版本的。 安装libk4a curl -O https://packages.microsoft.com/ubuntu/18.04/multiarch/prod/pool/main/libk/libk4a1.4/libk4a1.4_1.4.1_arm64.deb && sudo dpkg -i libk4a1.4_1.4.1_arm64.deb 安装libk4a-dev curl -O https://packages.microsoft.com/ubuntu/18.04/multiarch/prod/pool/main/libk/libk4a1.4-dev/libk4a1.4-dev_1.4.1_arm64.deb && sudo dpkg -i libk4a1.4-dev_1.4.1_arm64.deb 第三步:安装 k4a-tools k4a-tools也需要手动安装ARM64版本的。 ...

2023年03月24日 · 1 分钟 · Cassius0924

Ubuntu 安装软件包时遇到 unmet dependencies 的解决方法

在 Ubuntu 中安装软件包时,有时会遇到 “The following packages have unmet dependencies” 的错误,这通常是由于缺少软件包的依赖项和软件包冲突引起的。 解决方法逐个安装缺少的依赖包,直到提示删除冲突的软件包并继续安装。 示例例如在安装libvtk7.1-qt时提示如下图所示: 执行命令: sudo apt-get install libvtk7.1:amd64 注意:包名要完整,libvtk7.1:amd64不能少了:amd64 再次报错: 继续安装: sudo apt-get install libhdf5-openmpi-100:amd64 再次报错: 继续安装: sudo apt-get install libopenmpi2:amd64 又双叒叕报错: 继续安装: sudo apt-get install libhwloc-plugins:amd64 直到提示The following packages will be REMOVED: 直接回车删除冲突软件包并继续安装即可。 最后重新安装libvtk7.1: sudo apt-get install libvtk7.1-qt

2023年03月24日 · 1 分钟 · Cassius0924

apt autoremove 误删依赖包后自救指南

在使用 Ubuntu 系统的过程中,我们常常需要使用 apt 命令来安装、升级和删除软件包。其中,apt autoremove 命令可以自动删除无用的依赖包,以释放硬盘空间。然而,有时候我们会不小心误删了一些必要的依赖包,导致某些程序无法正常运行。 方法一:手动查看历史记录(推荐) 查看APT历史日志 sudo vim /var/log/apt/history.log 直接输入大写G,跳转到最后一行,找到相应时间的Remove内容。 若删除的包较少可以逐个apt install。若包较多可以使用正则表达式,具体操作如下。 复制所有被删除的包名 如果你的VIM开启了行号显示,请先临时禁用行号,目的是避免复制到多余的空格。 禁用行号,在命令模式下输入以下命令: :set nonumber 先复制你所有的删除的包,即Remove后的内容。 开启行号: :set number 输入:q退出VIM。 利用正则表达式处理包名 执行以下命令,用正则表达式删去版本信息和逗号: echo "粘贴在这" | sed 's/([^()]*)[,]*//g' 复制输出的内容。 执行安装命令 一口气全安装即可: sudo apt install "粘贴在这" 方法二:使用 aptitude 进行恢复aptitude 是一款强大的包管理器,它可以自动解决依赖关系,并且可以清晰地显示出哪些包被删除、哪些包被保留。因此,我们可以使用 aptitude 来恢复误删的依赖包。 首先,我们需要安装 aptitude: sudo apt-get install aptitude 然后,使用以下命令来查看被删除的软件包: sudo aptitude search '~c' 接下来,使用以下命令来恢复被删除的软件包: sudo aptitude install <package-name>

2023年03月24日 · 1 分钟 · Cassius0924