在 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) 我有一个包含 10 个硬盘的服务器。设备/dev/sdh在 btrfs 清理上报告无法纠正的读取错误。如何确定对应的物理磁盘 /dev/sdh?
我知道我可以使用 获取磁盘的型号和序列号,hdparm -I /dev/sd?并且可以使用findmnt或获取安装点lsblk。但是,我没有找到/dev/sdh通过序列号连接到硬盘的方法,这正是我所需要的。
我有一个正常工作的 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) 我没有构建内核模块的经验。更糟糕的是,我正在尝试在 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)
以下是我看过的一些参考资料:
是否可以排除rsync超过特定大小(例如超过 250 MB)的文件?
如果我还想排除隐藏文件怎么办?
我如何排除所有隐藏文件或目录(与“.*”匹配的文件或目录)以及大于 250 MB(无论是否隐藏)的文件(不是目录)?
使用已建立的 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 的某些用途可能无法与您的多路复用连接一起使用。最值得注意的是使用 …
我刚刚在 Kubuntu 15.10 上安装了 MariaDB。我可以通过从操作系统对用户进行身份验证的插件以 root 用户身份登录。(这对我来说是新的,所以我正在学习它,而不是像大多数教程推荐的那样删除插件身份验证。)
现在我想创建一个非 root 用户并授予该用户所有权限,并允许用户无需密码(仅使用插件)即可登录 mysql(在 localhost 上)。我该怎么做?我也需要给用户一个密码吗?
我的 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 的回答,将标题从“了解一个接口上的以太网连接”更改为“了解一个接口上的以太网地址”。
我希望使用笔记本电脑同时无线连接到 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 地址,将其分配给新的 …
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子句?
例如,如果我只关心上述输入不是非社会安全号码的情况,那么正确的方法是什么?