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

View file

@ -254,37 +254,25 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> 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: 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: 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. * Bug fixes and man page updates: Many options now have a 'See also' section.
News about GNU Parallel: 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 Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
@ -364,4 +352,4 @@ O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases
= About GNU Niceload = = About GNU Niceload =
GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit. GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.

View file

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

View file

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

View file

@ -2313,7 +2313,7 @@ sub check_invalid_option_combinations() {
sub init_globals() { sub init_globals() {
# Defaults: # Defaults:
$Global::version = 20220222; $Global::version = 20220223;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$::name = "GNU Parallel"; $::name = "GNU Parallel";
$Global::infinity = 2**31; $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 This replacement string will be replaced by the sequence number of the
job being run. It contains the same number as $PARALLEL_SEQ. job being run. It contains the same number as $PARALLEL_SEQ.
See also: B<{#}> B<--seqreplace> See also: B<{}> B<--seqreplace>
=item B<{%}> =item B<{%}>

View file

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

View file

@ -1,5 +1,26 @@
#!/usr/bin/perl #!/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: # Convert .pod file containing:
# #
# =item --option # =item --option

View file

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

View file

@ -18,6 +18,15 @@ echo TODO
EOF 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() { par_stop_if_no_hosts_left() {
echo '### Stop if all hosts are filtered and there are no hosts left to run on' 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 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 ### use --ssh
par_ssh Run through BARSSH? par_ssh Run through BARSSH?
par_ssh 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 ### 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: Warning: Removed no-such.host.
par_stop_if_no_hosts_left parallel: Error: Cannot run any jobs. par_stop_if_no_hosts_left parallel: Error: Cannot run any jobs.