parallel: Test for bug #61894: Pack ssh code in eval protection.

This commit is contained in:
Ole Tange 2022-02-23 21:19:12 +01:00
parent 5b325c60ba
commit 8e36c00344
17 changed files with 62 additions and 35 deletions

View file

@ -4,6 +4,8 @@
Quote of the month:
It's amazing how fast you can get with bash pipelines and GNU Parallel.
-- Eric Pauley @EricPauley_
GNU parallel すごいな、シェルスクリプトを make -jX みたいにして並列
に走らせたいときに超便利
@ -18,13 +20,10 @@ Quote of the month:
haberlo conocido antes :)
-- Juan Sierra Pons @juasiepo
If I could only keep 5 GNU utils, parallel would make it to the list
:)
-- 5heikki@reddit
Gnu Parallel: installed in every computer i have access to.
-- raffaele messuti @atomotic@twitter
@ -34,7 +33,7 @@ Quote of the month:
Deus salve o gnu parallel
-- marcos @guv_Tuv@twitter
@a201
@a
4
اليوم علمت بأداة تساعد على تشغيل أوامر الصدفة بشكل متوازي حسب عدد الأنوية الموجودة مما يجعلها أداة أساسية في عدة تنفيذ المهام.
الأداة اسمها gnu parallel

View file

@ -254,37 +254,25 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20220222 ('Donetsk Luhansk') released
Subject: GNU Parallel 20220322 ('<<>>') released [stable]
GNU Parallel 20220222 ('Donetsk Luhansk') has been released. It is available for download at: lbry://@GnuParallel:4
GNU Parallel 20220322 ('<<>>') has been released. It is available for download at: lbry://@GnuParallel:4
This release has a major change in the remote code. This makes this release beta quality.
No new functionality was introduced so this is a good candidate for a stable release.
Quote of the month:
I also prefer gnu parallel. Mainly because it makes embarrassingly
parallel tasks embarrassingly easy to run on the command line.
-- Vincent D. Warmerdam @fishnets88@twitter
<<>>
New in this release:
* Encoding of remote commands has changed. This limits the length of remote commands to less than half. It also requires $REMOTE_TMPDIR to be writable.
* Time functions hh_mm_ss() hhmmss() hh_mm() hhmm() are now available for {= =}.
* parallel_options_map.pdf is a map showing which options other options relate to.
* {uniq} added to --plus to only run jobs with unique values.
<<>>
* Bug fixes and man page updates: Many options now have a 'See also' section.
News about GNU Parallel:
* HPC at Noon - GNU Parallel u SLURM srun , 22 February 2022 https://kim.uni-hohenheim.de/en/96097?tx_ttnews%5Btt_news%5D=53919&cHash=985f4f4ac1a166d180d81f6e9be832a3
* linux 命令 -- parallel https://blog.csdn.net/qq_38197157/article/details/112596389
* Iterating Over Each Line of ls -l Output https://www.baeldung.com/linux/iterating-ls-l-output
<<>>
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

View file

@ -385,7 +385,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -385,7 +385,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -385,7 +385,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -363,7 +363,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -365,7 +365,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -390,7 +390,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -355,7 +355,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20220222 (GNU parallel `parallel --minversion 1`)"
echo "parset 20220223 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
echo "Foundation, Inc."
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"

View file

@ -26,7 +26,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20220222;
$Global::version = 20220223;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -2313,7 +2313,7 @@ sub check_invalid_option_combinations() {
sub init_globals() {
# Defaults:
$Global::version = 20220222;
$Global::version = 20220223;
$Global::progname = 'parallel';
$::name = "GNU Parallel";
$Global::infinity = 2**31;

View file

@ -205,7 +205,7 @@ Sequence number of the job to run.
This replacement string will be replaced by the sequence number of the
job being run. It contains the same number as $PARALLEL_SEQ.
See also: B<{#}> B<--seqreplace>
See also: B<{}> B<--seqreplace>
=item B<{%}>

View file

@ -122,7 +122,7 @@ GetOptions(
"help" => \$opt::dummy,
) || exit(255);
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
$Global::version = 20220222;
$Global::version = 20220223;
if($opt::version) { version(); exit 0; }
@Global::sortoptions = grep { ! /^-D$/ }
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);

View file

@ -1,5 +1,26 @@
#!/usr/bin/perl
# Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
# Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <https://www.gnu.org/licenses/>
# or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# SPDX-FileCopyrightText: 2021-2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# SPDX-License-Identifier: GPL-3.0-or-later
# Convert .pod file containing:
#
# =item --option

View file

@ -600,7 +600,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20220222;
$Global::version = 20220223;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -18,6 +18,15 @@ echo TODO
EOF
par_ssh_ssh() {
echo '### bug #61894: Pack ssh code in eval protection'
echo Unquoted ssh should work
parallel --ssh 'ssh lo ssh' -S lo 'hostname;echo' ::: OK
parallel --ssh 'eval ssh lo ssh' -S lo 'hostname;echo' ::: OK
parallel --ssh 'eval ssh lo eval ssh' -S lo 'hostname;echo' ::: OK
parallel --ssh 'sshpass ssh bash@lo eval ssh' -S csh@lo 'hostname;echo' ::: OK
}
par_stop_if_no_hosts_left() {
echo '### Stop if all hosts are filtered and there are no hosts left to run on'
stdout parallel --filter-hosts -S no-such.host echo ::: 1

View file

@ -83,6 +83,16 @@ par_remote_nice 5
par_ssh ### use --ssh
par_ssh Run through BARSSH?
par_ssh BARSSH
par_ssh_ssh ### bug #61894: Pack ssh code in eval protection
par_ssh_ssh Unquoted ssh should work
par_ssh_ssh aspire
par_ssh_ssh OK
par_ssh_ssh aspire
par_ssh_ssh OK
par_ssh_ssh aspire
par_ssh_ssh OK
par_ssh_ssh aspire
par_ssh_ssh OK
par_stop_if_no_hosts_left ### Stop if all hosts are filtered and there are no hosts left to run on
par_stop_if_no_hosts_left parallel: Warning: Removed no-such.host.
par_stop_if_no_hosts_left parallel: Error: Cannot run any jobs.