Filenames with backslashes causes a fatal error for Rex::Commands::Sync
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 48/100
Hướng nghiên cứu
Bắt đầu tại Rex::Interface::Fs::Base::_quotepath, được tham chiếu từ dòng 149 của Base.pm, và theo dõi cách sync_down xử lý đường dẫn chứa dấu gạch chéo ngược. Tái hiện bằng Rexfile được cung cấp trên một host chứa tên tệp systemd, sau đó xác minh rằng sync_down hoàn tất mà không có lỗi nghiêm trọng và giữ nguyên đường dẫn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
Rex terminates with errors (the error varies based on where it is thrown) if dealing with a filename containing backslashes.
Example:
[2023-09-20 11:16:14] INFO - Running task systemd on host
[2023-09-20 11:17:18] ERROR - Error executing task:
[2023-09-20 11:17:18] ERROR - Error running chmod 0755 /Users/mmusgrove/tmp/host/fs/etc/systemd/system/dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants at /Users/mmusgrove/perl5/perlbrew/perls/perl-5.26.3/lib/site_perl/5.26.3/Rex/Interface/Fs/Base.pm line 149, <> line 145.
[2023-09-20 11:17:18] ERROR - 1 out of 1 task(s) failed:
[2023-09-20 11:17:18] ERROR - systemd failed on host
[2023-09-20 11:17:18] ERROR - Error running chmod 0755 /Users/mmusgrove/tmp/host/fs/etc/systemd/system/dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants at /Users/mmusgrove/perl5/perlbrew/perls/perl-5.26.3/lib/site_perl/5.26.3/Rex/Interface/Fs/Base.pm line 149, <> line 145.
I was attempting to use rsync_down on /etc/systemd and it encountered this file:
[root@host ~]# ls -al /etc/systemd/system/dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants/qemu-guest-agent.service
lrwxrwxrwx. 1 root root 48 Oct 20 2021 '/etc/systemd/system/dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants/qemu-guest-agent.service' -> /usr/lib/systemd/system/qemu-guest-agent.service
The host/fs/etc/systemd/ directory exists with ~/tmp.
The problem seems to be that Rex::Interface::Fs::Base::_quotepath is not handling backslashes. I can fix it if I override that method as follows:
{
# Allow /etc/systemd/system/dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants to be synced
no warnings 'redefine';
*Rex::Interface::Fs::Base::_quotepath = sub {
my ( $self, $p ) = @_;
$p =~ s/([\\\@\$\% ])/\\$1/g; # Note the extra \\ before \@
return $p;
};
}
Expected behavior
I would expect the sync_down to function the same regardless of whether or not the filename contains a backslash character.
How to reproduce it
Modify the following Rexfile to use a valid hostname of a Linux system with qemu installed you can connect to with ssh
mkdir -p ~/tmp/host/fs/etc/systemd # where host is the same hostname
Place the Rexfile into ~/tmp.
cd ~/tmp
rex systemd
Code example
# Rexfile
use Rex -feature => ['1.4'];
group myservers => 'host';
desc 'Get /etc/systemd';
task 'systemd',
group => 'myservers',
sub {
my $server = connection->server;
sync_down "/etc/systemd", "$server/fs/etc/systemd/";
};
Additional context
No response
Rex version
(R)?ex 1.14.3
Perl version
v5.26.3
Operating system running rex
Darwin Kernel Version 22.6.0: Wed Jul 5 22:21:53 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T6020 arm64
Operating system managed by rex
AlmaLinux 8.8 (Sapphire Caracal)
How rex was installed?
package manager
- Ngôn ngữ chính
- Perl
- Star
- 736
- Fork
- 217
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của RexOps/Rex
-
is_redhat() misses Rocky/Alma/CentOS Stream/Oracle Linux lsb_release IDs -> pkg dies "OS/Provider not supported"Có thể đã có người làm @stantheman0128 đã nhận 22 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
-
triage needed
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
triage needed
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 42/100
Issue tương tự
-
radius_audit_logs/search returns 500 when the body has no query (nil SearchOp in Vars2.Sql)Có thể đã có người làm @fdurand đã nhận hôm nay. Đang mởType: Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
inverse-inc/packetfence#9564 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
LMS-Community/slimserver#1692 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(api): API v3 Product Read ignores request language (lc) for sample products and image URLsCó thể đã có người làm @muntasir-396 đã nhận 2 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
openfoodfacts/openfoodfacts-server#15042 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
libwww-perl/URI#214 ·