This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new f2fb4a8ff1a Feature/client hide password (#16468)
f2fb4a8ff1a is described below
commit f2fb4a8ff1ac006738786c2ce9a503c1447c682b
Author: Hongzhi Gao <[email protected]>
AuthorDate: Wed Sep 24 09:58:30 2025 +0800
Feature/client hide password (#16468)
* session hide password
* fix start-cli.sh
* fix start-cli.bat
* client hide password
* fix client warning
* echo cmd line
---
.../java/org/apache/iotdb/cli/AbstractCli.java | 10 +-
.../src/main/java/org/apache/iotdb/cli/Cli.java | 6 +-
scripts/sbin/start-cli.sh | 10 +-
scripts/sbin/windows/start-cli-table.bat | 191 ++++++++---------
scripts/sbin/windows/start-cli.bat | 228 ++++++++++-----------
5 files changed, 227 insertions(+), 218 deletions(-)
diff --git
a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
index 50be4ea5d5a..7fa55a795cf 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
@@ -335,10 +335,12 @@ public abstract class AbstractCli {
break;
}
}
- if (index >= 0
- && ((index + 1 >= args.length)
- || (index + 1 < args.length && keywordSet.contains(args[index +
1])))) {
- return ArrayUtils.remove(args, index);
+ if (index >= 0) {
+ if (index + 1 >= args.length
+ || args[index + 1].startsWith("-")
+ || (keywordSet.contains(args[index + 1]))) {
+ return ArrayUtils.remove(args, index);
+ }
}
return args;
}
diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
index 938df8f5de3..a6667a3bcff 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/Cli.java
@@ -161,14 +161,14 @@ public class Cli extends AbstractCli {
trustStore = commandLine.getOptionValue(TRUST_STORE_ARGS);
trustStorePwd = commandLine.getOptionValue(TRUST_STORE_PWD_ARGS);
password = commandLine.getOptionValue(PW_ARGS);
+ if (password == null) {
+ password = ctx.getLineReader().readLine("please input your password:",
'\0');
+ }
constructProperties();
if (hasExecuteSQL && password != null) {
ctx.getLineReader().getVariables().put(LineReader.DISABLE_HISTORY,
Boolean.TRUE);
executeSql(ctx);
}
- if (password == null) {
- password = ctx.getLineReader().readLine("please input your password:",
'\0');
- }
receiveCommands(ctx);
} catch (Exception e) {
ctx.getPrinter().println(IOTDB_ERROR_PREFIX + ": Exit cli with error: "
+ e.getMessage());
diff --git a/scripts/sbin/start-cli.sh b/scripts/sbin/start-cli.sh
index b864669134f..b619d2ef7f8 100755
--- a/scripts/sbin/start-cli.sh
+++ b/scripts/sbin/start-cli.sh
@@ -73,8 +73,13 @@ while true; do
shift 2
;;
-pw)
- passwd_param="-pw $2"
- shift 2
+ if [ -n "$2" ] && [[ ! "$2" =~ ^- ]]; then
+ passwd_param="-pw $2"
+ shift 2
+ else
+ passwd_param="-pw"
+ shift
+ fi
;;
-h)
host_param="-h $2"
@@ -158,6 +163,7 @@ JVM_OPTS="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
set -o noglob
iotdb_cli_params="-Dlogback.configurationFile=${IOTDB_CLI_CONF}/logback-cli.xml"
+echo $PARAMETERS
exec "$JAVA" $JVM_OPTS $iotdb_cli_params $illegal_access_params -cp
"$CLASSPATH" "$MAIN_CLASS" $PARAMETERS
exit $?
diff --git a/scripts/sbin/windows/start-cli-table.bat
b/scripts/sbin/windows/start-cli-table.bat
index 67b3c318cc9..8508d920b8c 100644
--- a/scripts/sbin/windows/start-cli-table.bat
+++ b/scripts/sbin/windows/start-cli-table.bat
@@ -1,3 +1,4 @@
+@echo off
@REM
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@@ -17,110 +18,110 @@
@REM under the License.
@REM
-@echo off
-@REM set cmd format
-powershell -NoProfile -Command "$v=(Get-ItemProperty
'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp
65001' }"
-
-
-@REM DEFAULT_SQL_DIALECT is used to set the default SQL dialect for the CLI.
-@REM empty value means using "tree".
-@REM Optional values: "table" or "tree"
-set DEFAULT_SQL_DIALECT=table
-
-@REM You can put your env variable here
-@REM set JAVA_HOME=%JAVA_HOME%
-
-title IoTDB CLI
-
-set PATH="%JAVA_HOME%\bin\";%PATH%
-set "FULL_VERSION="
-set "MAJOR_VERSION="
-set "MINOR_VERSION="
-
-for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java -fullversion 2^>^&1') do (
- set "FULL_VERSION=%%j-%%k-%%l-%%m"
- IF "%%j" == "1" (
- set "MAJOR_VERSION=%%k"
- set "MINOR_VERSION=%%l"
- ) else (
- set "MAJOR_VERSION=%%j"
- set "MINOR_VERSION=%%k"
- )
+REM -------------------------------
+REM Default SQL dialect
+if "%DEFAULT_SQL_DIALECT%"=="" set DEFAULT_SQL_DIALECT=table
+
+REM Default connection parameters
+set user_param=-u root
+set passwd_param=-pw root
+set host_param=-h 127.0.0.1
+set port_param=-p 6667
+set sql_dialect_param=-sql_dialect %DEFAULT_SQL_DIALECT%
+set PARAMETERS=
+
+REM -------------------------------
+REM Parse command-line arguments
+:parse_args
+if "%~1"=="" goto after_parse
+
+if /I "%~1"=="-u" (
+ set user_param=-u %~2
+ shift
+ shift
+ goto parse_args
+)
+if /I "%~1"=="-pw" (
+ if "%~2"=="" (
+ set passwd_param=-pw
+ shift
+ ) else (
+ set passwd_param=-pw %~2
+ shift
+ shift
+ )
+ goto parse_args
+)
+if /I "%~1"=="-h" (
+ set host_param=-h %~2
+ shift
+ shift
+ goto parse_args
+)
+if /I "%~1"=="-p" (
+ set port_param=-p %~2
+ shift
+ shift
+ goto parse_args
+)
+if /I "%~1"=="-sql_dialect" (
+ set sql_dialect_param=-sql_dialect %~2
+ shift
+ shift
+ goto parse_args
)
-set JAVA_VERSION=%MAJOR_VERSION%
-
-if "%OS%" == "Windows_NT" setlocal
-
-pushd %~dp0..\..
-if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%CD%
-popd
-
-if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.cli.Cli
-if NOT DEFINED JAVA_HOME goto :err
-
-@REM
-----------------------------------------------------------------------------
-@REM JVM Opts we'll use in legacy run or installation
-set JAVA_OPTS=-ea^
- -DIOTDB_HOME="%IOTDB_HOME%"
-
-@REM ***** CLASSPATH library setting *****
-@REM Ensure that any user defined CLASSPATH variables are not used on startup
-if EXIST "%IOTDB_HOME%\lib" (set CLASSPATH="%IOTDB_HOME%\lib\*") else set
CLASSPATH="%IOTDB_HOME%\..\lib\*"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-
-goto :eof
-
-REM
-----------------------------------------------------------------------------
-:okClasspath
-set PARAMETERS=%*
-
-@REM if "%PARAMETERS%" == "" set PARAMETERS=-h 127.0.0.1 -p 6667 -u root -pw
root
-
-@REM if DEFAULT_SQL_DIALECT is empty, set it to "tree"
-if "%DEFAULT_SQL_DIALECT%" == "" set DEFAULT_SQL_DIALECT=tree
-
-@REM set default parameters
-set pw_parameter=-pw root
-set u_parameter=-u root
-set p_parameter=-p 6667
-set h_parameter=-h 127.0.0.1
-set sql_dialect__parameter=-sql_dialect %DEFAULT_SQL_DIALECT%
+REM Any other arguments
+set PARAMETERS=%PARAMETERS% %~1
+shift
+goto parse_args
-@REM Added parameters when default parameters are missing
-echo %PARAMETERS% | findstr /c:"-sql_dialect ">nul && (set
PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%sql_dialect__parameter%
%PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-pw ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%pw_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-u ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%u_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-p ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%p_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-h ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%h_parameter% %PARAMETERS%)
+:after_parse
-echo %PARAMETERS%
+REM Combine all parameters
+set PARAMETERS=%host_param% %port_param% %user_param% %passwd_param%
%sql_dialect_param% %PARAMETERS%
-@REM Add args for Java 11 and above, due to [JEP 396: Strongly Encapsulate JDK
Internals by Default] (https://openjdk.java.net/jeps/396)
-IF "%JAVA_VERSION%" == "8" (
- set ILLEGAL_ACCESS_PARAMS=
-) ELSE (
- set ILLEGAL_ACCESS_PARAMS=--add-opens=java.base/java.lang=ALL-UNNAMED
+REM -------------------------------
+REM Set IOTDB_HOME
+if not defined IOTDB_HOME (
+ pushd %~dp0..\..
+ set IOTDB_HOME=%CD%
+ popd
)
-set JAVA_OPTS=%JAVA_OPTS% -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
-java %ILLEGAL_ACCESS_PARAMS% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS%
%PARAMETERS%
-set ret_code=%ERRORLEVEL%
-goto finally
-
-:err
-echo JAVA_HOME environment variable must be set!
-set ret_code=1
-pause
+REM CLI configuration
+set IOTDB_CLI_CONF=%IOTDB_HOME%\conf
+set MAIN_CLASS=org.apache.iotdb.cli.Cli
+REM -------------------------------
+REM CLASSPATH setup
+if exist "%IOTDB_HOME%\lib" (
+ set CLASSPATH=%IOTDB_HOME%\lib\*
+) else (
+ set CLASSPATH=%IOTDB_HOME%\..\lib\*
+)
-@REM
-----------------------------------------------------------------------------
-:finally
+REM -------------------------------
+REM JAVA executable
+if defined JAVA_HOME (
+ if exist "%JAVA_HOME%\bin\java.exe" (
+ set JAVA=%JAVA_HOME%\bin\java.exe
+ ) else (
+ set JAVA=java
+ )
+) else (
+ set JAVA=java
+)
-ENDLOCAL
+REM -------------------------------
+REM JVM options
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
+set
IOTDB_CLI_PARAMS=-Dlogback.configurationFile=%IOTDB_CLI_CONF%\logback-cli.xml
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
--add-opens=java.base/java.lang=ALL-UNNAMED
-EXIT /B %ret_code%
+REM -------------------------------
+REM Run CLI
+echo %PARAMETERS%
+"%JAVA%" %JVM_OPTS% %IOTDB_CLI_PARAMS% -cp "%CLASSPATH%" %MAIN_CLASS%
%PARAMETERS%
+exit /b %ERRORLEVEL%
diff --git a/scripts/sbin/windows/start-cli.bat
b/scripts/sbin/windows/start-cli.bat
index f79bfb8b962..823f3c2cbd7 100644
--- a/scripts/sbin/windows/start-cli.bat
+++ b/scripts/sbin/windows/start-cli.bat
@@ -1,126 +1,126 @@
-@REM
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements. See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership. The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License. You may obtain a copy of the License at
-@REM
-@REM http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied. See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM
-
@echo off
-@REM set cmd format
-powershell -NoProfile -Command "$v=(Get-ItemProperty
'HKLM:\SOFTWARE\Microsoft\Windows
NT\CurrentVersion').CurrentMajorVersionNumber; if($v -gt 6) { cmd /c 'chcp
65001' }"
-
-
-@REM DEFAULT_SQL_DIALECT is used to set the default SQL dialect for the CLI.
-@REM empty value means using "tree".
-@REM Optional values: "table" or "tree"
-set DEFAULT_SQL_DIALECT=tree
-
-@REM You can put your env variable here
-@REM set JAVA_HOME=%JAVA_HOME%
-
-title IoTDB CLI
-
-set PATH="%JAVA_HOME%\bin\";%PATH%
-set "FULL_VERSION="
-set "MAJOR_VERSION="
-set "MINOR_VERSION="
-
-
-for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java -fullversion 2^>^&1') do (
- set "FULL_VERSION=%%j-%%k-%%l-%%m"
- IF "%%j" == "1" (
- set "MAJOR_VERSION=%%k"
- set "MINOR_VERSION=%%l"
- ) else (
- set "MAJOR_VERSION=%%j"
- set "MINOR_VERSION=%%k"
- )
+REM
+REM Licensed to the Apache Software Foundation (ASF) under one
+REM or more contributor license agreements. See the NOTICE file
+REM distributed with this work for additional information
+REM regarding copyright ownership. The ASF licenses this file
+REM to you under the Apache License, Version 2.0 (the
+REM "License"); you may not use this file except in compliance
+REM with the License. You may obtain a copy of the License at
+REM
+REM http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM Unless required by applicable law or agreed to in writing,
+REM software distributed under the License is distributed on an
+REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+REM KIND, either express or implied. See the License for the
+REM specific language governing permissions and limitations
+REM under the License.
+REM
+
+REM -------------------------------
+REM Default SQL dialect
+if "%DEFAULT_SQL_DIALECT%"=="" set DEFAULT_SQL_DIALECT=tree
+
+REM Default connection parameters
+set user_param=-u root
+set passwd_param=-pw root
+set host_param=-h 127.0.0.1
+set port_param=-p 6667
+set sql_dialect_param=-sql_dialect %DEFAULT_SQL_DIALECT%
+set PARAMETERS=
+
+REM -------------------------------
+REM Parse command-line arguments
+:parse_args
+if "%~1"=="" goto after_parse
+
+if /I "%~1"=="-u" (
+ set user_param=-u %~2
+ shift
+ shift
+ goto parse_args
+)
+if /I "%~1"=="-pw" (
+ if "%~2"=="" (
+ set passwd_param=-pw
+ shift
+ ) else (
+ set passwd_param=-pw %~2
+ shift
+ shift
+ )
+ goto parse_args
+)
+if /I "%~1"=="-h" (
+ set host_param=-h %~2
+ shift
+ shift
+ goto parse_args
+)
+if /I "%~1"=="-p" (
+ set port_param=-p %~2
+ shift
+ shift
+ goto parse_args
+)
+if /I "%~1"=="-sql_dialect" (
+ set sql_dialect_param=-sql_dialect %~2
+ shift
+ shift
+ goto parse_args
)
-set JAVA_VERSION=%MAJOR_VERSION%
-
-if "%OS%" == "Windows_NT" setlocal
-
-pushd %~dp0..\..
-if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%CD%
-popd
-
-if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.cli.Cli
-if NOT DEFINED JAVA_HOME goto :err
-
-@REM
-----------------------------------------------------------------------------
-@REM JVM Opts we'll use in legacy run or installation
-set JAVA_OPTS=-ea^
- -DIOTDB_HOME="%IOTDB_HOME%"
-
-@REM ***** CLASSPATH library setting *****
-@REM Ensure that any user defined CLASSPATH variables are not used on startup
-if EXIST "%IOTDB_HOME%\lib" (set CLASSPATH="%IOTDB_HOME%\lib\*") else set
CLASSPATH="%IOTDB_HOME%\..\lib\*"
-goto okClasspath
-
-:append
-set CLASSPATH=%CLASSPATH%;%1
-
-goto :eof
-
-REM
-----------------------------------------------------------------------------
-:okClasspath
-set PARAMETERS=%*
-
-@REM if "%PARAMETERS%" == "" set PARAMETERS=-h 127.0.0.1 -p 6667 -u root -pw
root
-
-@REM if DEFAULT_SQL_DIALECT is empty, set it to "tree"
-if "%DEFAULT_SQL_DIALECT%" == "" set DEFAULT_SQL_DIALECT=tree
-
-@REM set default parameters
-set pw_parameter=-pw root
-set u_parameter=-u root
-set p_parameter=-p 6667
-set h_parameter=-h 127.0.0.1
-set sql_dialect__parameter=-sql_dialect %DEFAULT_SQL_DIALECT%
+REM Any other arguments
+set PARAMETERS=%PARAMETERS% %~1
+shift
+goto parse_args
-@REM Added parameters when default parameters are missing
-echo %PARAMETERS% | findstr /c:"-sql_dialect ">nul && (set
PARAMETERS=%PARAMETERS%) || (set PARAMETERS=%sql_dialect__parameter%
%PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-pw ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%pw_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-u ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%u_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-p ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%p_parameter% %PARAMETERS%)
-echo %PARAMETERS% | findstr /c:"-h ">nul && (set PARAMETERS=%PARAMETERS%) ||
(set PARAMETERS=%h_parameter% %PARAMETERS%)
+:after_parse
-echo %PARAMETERS%
+REM Combine all parameters
+set PARAMETERS=%host_param% %port_param% %user_param% %passwd_param%
%sql_dialect_param% %PARAMETERS%
-@REM Add args for Java 11 and above, due to [JEP 396: Strongly Encapsulate JDK
Internals by Default] (https://openjdk.java.net/jeps/396)
-IF "%JAVA_VERSION%" == "8" (
- set ILLEGAL_ACCESS_PARAMS=
-) ELSE (
- set ILLEGAL_ACCESS_PARAMS=--add-opens=java.base/java.lang=ALL-UNNAMED
+REM -------------------------------
+REM Set IOTDB_HOME
+if not defined IOTDB_HOME (
+ pushd %~dp0..\..
+ set IOTDB_HOME=%CD%
+ popd
)
-set JAVA_OPTS=%JAVA_OPTS% -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
-java %ILLEGAL_ACCESS_PARAMS% %JAVA_OPTS% -cp %CLASSPATH% %MAIN_CLASS%
%PARAMETERS%
-set ret_code=%ERRORLEVEL%
-goto finally
-
-:err
-echo JAVA_HOME environment variable must be set!
-set ret_code=1
-pause
+REM CLI configuration
+set IOTDB_CLI_CONF=%IOTDB_HOME%\conf
+set MAIN_CLASS=org.apache.iotdb.cli.Cli
+REM -------------------------------
+REM CLASSPATH setup
+if exist "%IOTDB_HOME%\lib" (
+ set CLASSPATH=%IOTDB_HOME%\lib\*
+) else (
+ set CLASSPATH=%IOTDB_HOME%\..\lib\*
+)
-@REM
-----------------------------------------------------------------------------
-:finally
+REM -------------------------------
+REM JAVA executable
+if defined JAVA_HOME (
+ if exist "%JAVA_HOME%\bin\java.exe" (
+ set JAVA=%JAVA_HOME%\bin\java.exe
+ ) else (
+ set JAVA=java
+ )
+) else (
+ set JAVA=java
+)
-ENDLOCAL
+REM -------------------------------
+REM JVM options
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
+set
IOTDB_CLI_PARAMS=-Dlogback.configurationFile=%IOTDB_CLI_CONF%\logback-cli.xml
+set JVM_OPTS=-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
--add-opens=java.base/java.lang=ALL-UNNAMED
-EXIT /B %ret_code%
+REM -------------------------------
+REM Run CLI
+echo %PARAMETERS%
+"%JAVA%" %JVM_OPTS% %IOTDB_CLI_PARAMS% -cp "%CLASSPATH%" %MAIN_CLASS%
%PARAMETERS%
+exit /b %ERRORLEVEL%