小编Mou*_*inX的帖子

rsync 失败,错误消息令人困惑

在 bash 脚本(Arch Linux)中,我有以下 rsync 命令:

rsync –nvaAHX --inplace --delete-delay --exclude-from="/etc/$path1/exclude-list-$configName.txt" "$new_snap/" "$BACKUPDIR"
Run Code Online (Sandbox Code Playgroud)

rsync 命令失败并显示以下错误:

rsync: --delete does not work without --recursive (-r) or --dirs (-d).
Run Code Online (Sandbox Code Playgroud)

当然,该消息具有误导性,因为“a”暗示“r”。

如果我从 rsync 命令中删除选项“--delete-delay”,我会收到这个不同的错误:

rsync: link_stat "/some/path/–aAHX" failed: No such file or directory (2)
Run Code Online (Sandbox Code Playgroud)

“/some/path”中显示的值是当前工作目录。如果我更改当前目录,错误消息中的值也会更改。但是,为什么将选项“-aAHX”附加到路径的任何部分令人困惑。

该计算机是一个完全更新的 Arch Linux 系统。我也刚重启过。

4.13.11-1-ARCH #1 SMP PREEMPT Thu Nov 2 10:25:56 CET 2017 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

rsync 程序位置:

# which rsync
/usr/bin/rsync
Run Code Online (Sandbox Code Playgroud)

这是测试脚本:

#!/bin/bash

path1=xyz
configName=root
new_snap=/.snapshots/1/snapshot
BACKUPDIR=/backup/$configName

echo "showing exclude file contents:"

cat "/etc/$path1/exclude-list-$configName.txt"

echo

echo rsync –nvaAHX …
Run Code Online (Sandbox Code Playgroud)

rsync

3
推荐指数
1
解决办法
5899
查看次数

用于在具有许多磁盘的服务器中识别特定物理磁盘的命令

我有一个包含 10 个硬盘的服务器。设备/dev/sdh在 btrfs 清理上报告无法纠正的读取错误。如何确定对应的物理磁盘 /dev/sdh

我知道我可以使用 获取磁盘的型号和序列号,hdparm -I /dev/sd?并且可以使用findmnt或获取安装点lsblk。但是,我没有找到/dev/sdh通过序列号连接到硬盘的方法,这正是我所需要的。

hardware hard-disk

3
推荐指数
2
解决办法
6782
查看次数

Linux 用户名中的一个点会导致:“用户名不在 sudoers 文件中。此事件将被报告。”

我有一个正常工作的 Debian 服务器。所有已被授予权限的现有用户都可以毫无问题地sudo使用。sudo但是,用户名中带有的新用户在尝试执行以下操作时会看到“用户名不在 sudoers 文件中。将报告此事件” sudo

我没有看到该用户遗漏了任何步骤。这是我的步骤:

创建一个用户名中带有点的特权用户。我使用这个小脚本来添加开发人员用户帐户。

#!/bin/bash
uu=$1
useradd -m -G sudo,webdev -s /bin/bash $uu
passwd $uu
cd /home/$uu/
mkdir .ssh/
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chmod 700 .ssh/
chown -R $uu:$uu .ssh/
ls -la .ssh/
cat $uu.pub > /home/$uu/.ssh/authorized_keys
echo "finished"
Run Code Online (Sandbox Code Playgroud)

检查用户是否在 sudo 组中:

getent group sudo
Run Code Online (Sandbox Code Playgroud)

这已经存在于/etc/sudoers

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)

接下来我创建了 /etc/sudoers.d/user.name (并将权限设置为 640):

nano /etc/sudoers.d/user.name
user.name ALL=(ALL) …
Run Code Online (Sandbox Code Playgroud)

sudo

3
推荐指数
1
解决办法
4963
查看次数

我需要一个在 ChrUbuntu 中构建内核模块的分步指南

我没有构建内核模块的经验。更糟糕的是,我正在尝试在 ChrUbuntu 上执行此操作,因此我似乎无法遵循现有的 Ubuntu 指南。例如,此命令失败:

# apt-get install linux-headers-$(uname -r)
Run Code Online (Sandbox Code Playgroud)

因为 ChrUbuntu 内核是 3.4.0 版,并且没有该版本的 Ubuntu 存储库 (afaik)。

uname -a

Linux ChrUbuntu 3.4.0 #1 SMP Sun Aug 26 19:17:55 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

以下是我看过的一些参考资料:

内核/编译 - 社区 Ubuntu 文档

如何:编译 Linux 内核模块

Debian / Ubuntu Linux 安装内核头文件包

Hello World 可加载内核模块 | 马克·洛伊索

64 位 - 如何编译内核模块?- 询问 Ubuntu

编译内核模块

为构建内核模块设置 Ubuntu - Drew Stephens

compiling drivers ubuntu kernel-modules

2
推荐指数
1
解决办法
1万
查看次数

rsync 根据文件大小排除?

是否可以排除rsync超过特定大小(例如超过 250 MB)的文件?

如果我还想排除隐藏文件怎么办?

我如何排除所有隐藏文件或目录(与“.*”匹配的文件或目录)以及大于 250 MB(无论是否隐藏)的文件(不是目录)?

rsync regular-expression

2
推荐指数
1
解决办法
4622
查看次数

通过一个主 OpenSSH 连接建立多个 SSH 隧道(本地和远程转发)?好主意?

使用已建立的 SSH 通道这个问题的答案引起了我的兴趣。它表明我可以重用现有的 SSH 连接。然而,经过进一步阅读,我发现这个解决方案可能不适用于我的情况(同时多个隧道)。

我正在使用 OpenSSH_5.9p1 Debian-5ubuntu1.1、OpenSSL 1.0.1 2012 年 3 月 14 日(在 Kubuntu 12.04 上)。

这是我目前在 bash 脚本中所做的事情:

echo "establishing SSH tunnel for SFTP && opening Dolpin with SFTP connection to remote computer..."
ssh -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" -fL $PORT_NUMBER:localhost:$PORT_NUMBER sleep 20; dolphin sftp://HostSftp:$PORT_NUMBER &

echo "establishing SSH tunnel for VNC && connecting to VNC server for remote desktop support..."
sudo ssh -fL 5901:localhost:$VNC_PORT_NUMBER -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" sleep 20; vncviewer localhost:5901
Run Code Online (Sandbox Code Playgroud)

我的担忧(为什么我认为这可能对我不起作用)包括以下内容:

这样做的缺点是 ssh 的某些用途可能无法与您的多路复用连接一起使用。最值得注意的是使用 …

ssh ssh-tunneling

2
推荐指数
1
解决办法
5627
查看次数

MariaDB:使用 unix sockets 插件(无密码)创建并授予新用户

我刚刚在 Kubuntu 15.10 上安装了 MariaDB。我可以通过从操作系统对用户进行身份验证的插件以 root 用户身份登录。(这对我来说是新的,所以我正在学习它,而不是像大多数教程推荐的那样删除插件身份验证。)

现在我想创建一个非 root 用户并授予该用户所有权限,并允许用户无需密码(仅使用插件)即可登录 mysql(在 localhost 上)。我该怎么做?我也需要给用户一个密码吗?

authentication mysql mariadb unix-sockets

1
推荐指数
1
解决办法
5247
查看次数

了解一个接口上的以太网地址

我的 Arch Linux 机器上的 eth0 直接连接到电缆调制解调器。ip a显示以下信息。openvpn 已经建立了一个隧道。所有流量都应仅通过 openvpn 隧道。所有这些其他连接是做什么用的?它们会带来安全问题吗?

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether c4:d4:64:34:b4:94 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.181/24 brd 10.0.0.255 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 2601:343:380:1f6::3c84/128 scope global dynamic noprefixroute 
    valid_lft 566296sec preferred_lft 566296sec
    inet6 2601:343:380:1f6:d609:189b:cf5b:bb8e/64 scope global dynamic mngtmpaddr noprefixroute 
    valid_lft 196684sec preferred_lft 196684sec
    inet6 fe80::2e4d:54ff:fe53:8b92/64 scope link 
    valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

编辑

根据 dirkt 的回答,将标题从“了解一个接口上的以太网连接”更改为“了解一个接口上的以太网地址”。

networking security ip arch-linux network-interface

1
推荐指数
1
解决办法
3049
查看次数

如何通过 WiFi 接入点同时连接到两个不同的网络(带有一张 WiFi 卡的笔记本电脑)

我希望使用笔记本电脑同时无线连接到 Intranet 和 Internet。假设访问Internet的网络的子网IP地址范围为192.168.0.X,内网的子网IP地址范围为10.10.0.X。我在 2017 款 Lenovo ThinkPad 上运行 Arch Linux。看来我的无线网卡支持组合。我不完全理解下面的所有输出,但我认为它证实了我的卡可以同时在多种模式下运行。

iw list | grep -A 2 'interface combination'
valid interface combinations:
* #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
total <= 3, #channels <= 2
Run Code Online (Sandbox Code Playgroud)

我用这个答案开始:https://askubuntu.com/a/488604/36661

我已经验证以下命令成功:

iw dev wlan0 interface add wlan1 type station
Run Code Online (Sandbox Code Playgroud)

运行该命令后,我看到这个界面:

4: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether c6:d1:7c:2b:1a:b2 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)

但是,我没有成功将该接口连接到第二个接入点。首先,我尝试了 NetworkManager GUI,在其中创建了一个新的无线连接,给它一个随机 MAC 地址,将其分配给新的 …

networking wifi routing networkmanager wlan

1
推荐指数
1
解决办法
4112
查看次数

如何否定 Bash 的正则表达式匹配运算符

Bash 有=~正则表达式匹配操作符。下面是一个使用它的例子:

#!/bin/bash

input=$1


if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
#                 ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
# NNN-NN-NNNN (where each N is a digit).
then
  echo "Social Security number."
  # Process SSN.
else
  echo "Not a Social Security number!"
  # Or, ask for corrected input.
fi
Run Code Online (Sandbox Code Playgroud)

对于否定,我见过的所有例子都依赖于一个else子句。对于我对否定匹配感兴趣的情况,有没有更好的方法来制作非功能性if子句?

例如,如果我只关心上述输入不是非社会安全号码的情况,那么正确的方法是什么?

bash regular-expression pattern-matching

1
推荐指数
1
解决办法
1619
查看次数