DSE Cassandra 4.8.4 不是有效的端口号
DSE Cassandra 4.8.4 not a valid port number
我有一个四节点集群,正在尝试启动节点 1 和 运行。
Cassandra 版本:DSE Cassandra 4.8.4
我用来登录 cqlsh 的语法是:
cqlsh -u cassandra -pw cassandra 10.30.30.243 9160
我收到的输出如下:
Usage: cqlsh [options] [host [port]]
cqlsh: error: '10.30.30.243' is not a valid port number.
你只需要 -p
作为密码,它选择 cassandra 作为主机然后使用主机作为端口。
尝试
cqlsh -u cassandra -p cassandra 10.30.30.243
您不需要该端口,因为这是默认端口。
我想我花了很多时间反汇编目标代码。有源代码真是一种享受。这是我在 bin/cqlsh.py 中所做的,在我添加的第 2350 行附近:
import pdb; pdb.set_trace()
行前:
hostname = environment.get('CQLSH_HOST', hostname)
port = environment.get('CQLSH_PORT', port)
请记住缩进对 Python 很重要,看来,如果您遇到错误。
调试使用命令'p hostname'和'p port',使用'n'前进。
你可以阅读代码,这里只有几行:
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2368)read_options()
-> if optvalues.color in (True, False):
(Pdb) p port
'192.168.1.3:9042'
可以看到"port"已经变成IP地址和端口了,往下走试试
并通过它:
-> try: (Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2383)read_options()
-> port = int(port) (Pdb) p port '192.168.1.3:9042' (Pdb) n ValueError: "invalid literal for int() with base 10: '192.168.1.3:9042'"
> /usr/local/c4/cassandra/bin/cqlsh.py(2383)read_options()
-> port = int(port)
所以你有它:
> /usr/local/c4/cassandra/bin/cqlsh.py(2384)read_options()
-> except ValueError:
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2385)read_options()
-> parser.error('%r is not a valid port number.' % port)
(Pdb) n
Usage: cqlsh.py [options] [host [port]]
cqlsh.py: error: '192.168.1.3:9042' is not a valid port number.
SystemExit: 2
> /usr/local/c4/cassandra/bin/cqlsh.py(2385)read_options()
-> parser.error('%r is not a valid port number.' % port)
我运行它与
bin/cqlsh -u cassandra -pw cassandra 192.168.1.3 9042
p len(arguments) 3
p arguments[0] 'cassandra'
p arguments[1] '192.168.1.3'
p arguments[2] '9042'
> /usr/local/c4/cassandra/bin/cqlsh.py(2386)read_options()
-> parser.error('%r is not a valid port number.' % port)
(Pdb) p port
'192.168.1.3
我查看了 Python 中的解析工作原理,cqlsh.py 解析例程预期:
parser.add_option("-p", "--password", help="Authenticate using password.")
bin/cqlsh -u 卡桑德拉 -p 卡桑德拉 192.168.1.3 9042
现在解析器很开心
--Return--
> /usr/local/c4/cassandra/bin/cqlsh.py(2386)read_options()->(<Values at 0x...owser': None}>, '192.168.1.3', 9042)
-> return options, hostname, port
现在要弄清楚凭据发生了什么;记住我没有改变 Python,我只是给它提供各种输入。
AuthenticationFailed(...e=0100 [Bad credentials] message="Provided
username cassandra and/or password are incorrect
单步执行
https://github.com/python/cpython/blob/master/Lib/optparse.py
密码使用 -p 正确解析并存储在 'password' 中。
IP地址和端口在
/usr/lib/python2.7/optparse.py(1405)parse_args()->(<Values at 0x...owser': None}>, ['192.168.1.3', '9042'])
这让我们自然回到离开的地方 cqlsh.py
/usr/local/c4/cassandra/bin/cqlsh.py(2339)read_options()
-> hostname = option_with_default(configs.get, 'connection', 'hostname', DEFAULT_HOST)
一切看起来都很好,然后我们遇到了一些以前从未见过的错误
(Pdb) p len(arguments)
2
(Pdb) p arguments
['192.168.1.3', '9042']
(Pdb) n
NoSectionError: No secti...nnection'
> /usr/local/c4/cassandra/bin/cqlsh.py(2258)option_with_default()
-> return cparser_getter(section, option)
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2259)option_with_default()
-> except ConfigParser.Error:
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2260)option_with_default()
-> return default
(Pdb) p len(arguments)
2
(Pdb) p arguments
['192.168.1.3', '9042']
然而,参数和计数看起来仍然很完美,实际上如我们之前所见返回。从这里继续下去,显示该段驱动了3次,每次都报错。
NoSectionError: No secti...nnection'
> /usr/local/c4/cassandra/bin/cqlsh.py(2258)option_with_default()
-> return cparser_getter(section, option)
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2259)option_with_default()
-> except ConfigParser.Error:
我目前的推测;对 ConfigParser 的调用对之前存储得很好的用户或密码字段产生了不良影响。我希望可以找到问题所在,但我没有时间进行这项工作,所以我会把它留给专业人士。
现在我已经回到
authenticator: AllowAllAuthenticator in cassandra.yaml where
bin/cqlsh 192.168.1.3 9042
让我直接进入 CQLSH。
我有一个四节点集群,正在尝试启动节点 1 和 运行。
Cassandra 版本:DSE Cassandra 4.8.4
我用来登录 cqlsh 的语法是:
cqlsh -u cassandra -pw cassandra 10.30.30.243 9160
我收到的输出如下:
Usage: cqlsh [options] [host [port]]
cqlsh: error: '10.30.30.243' is not a valid port number.
你只需要 -p
作为密码,它选择 cassandra 作为主机然后使用主机作为端口。
尝试
cqlsh -u cassandra -p cassandra 10.30.30.243
您不需要该端口,因为这是默认端口。
我想我花了很多时间反汇编目标代码。有源代码真是一种享受。这是我在 bin/cqlsh.py 中所做的,在我添加的第 2350 行附近:
import pdb; pdb.set_trace()
行前:
hostname = environment.get('CQLSH_HOST', hostname)
port = environment.get('CQLSH_PORT', port)
请记住缩进对 Python 很重要,看来,如果您遇到错误。
调试使用命令'p hostname'和'p port',使用'n'前进。
你可以阅读代码,这里只有几行:
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2368)read_options()
-> if optvalues.color in (True, False):
(Pdb) p port
'192.168.1.3:9042'
可以看到"port"已经变成IP地址和端口了,往下走试试 并通过它:
-> try: (Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2383)read_options()
-> port = int(port) (Pdb) p port '192.168.1.3:9042' (Pdb) n ValueError: "invalid literal for int() with base 10: '192.168.1.3:9042'"
> /usr/local/c4/cassandra/bin/cqlsh.py(2383)read_options()
-> port = int(port)
所以你有它:
> /usr/local/c4/cassandra/bin/cqlsh.py(2384)read_options()
-> except ValueError:
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2385)read_options()
-> parser.error('%r is not a valid port number.' % port)
(Pdb) n
Usage: cqlsh.py [options] [host [port]]
cqlsh.py: error: '192.168.1.3:9042' is not a valid port number.
SystemExit: 2
> /usr/local/c4/cassandra/bin/cqlsh.py(2385)read_options()
-> parser.error('%r is not a valid port number.' % port)
我运行它与
bin/cqlsh -u cassandra -pw cassandra 192.168.1.3 9042
p len(arguments) 3
p arguments[0] 'cassandra'
p arguments[1] '192.168.1.3'
p arguments[2] '9042'
> /usr/local/c4/cassandra/bin/cqlsh.py(2386)read_options()
-> parser.error('%r is not a valid port number.' % port)
(Pdb) p port
'192.168.1.3
我查看了 Python 中的解析工作原理,cqlsh.py 解析例程预期:
parser.add_option("-p", "--password", help="Authenticate using password.")
bin/cqlsh -u 卡桑德拉 -p 卡桑德拉 192.168.1.3 9042
现在解析器很开心
--Return--
> /usr/local/c4/cassandra/bin/cqlsh.py(2386)read_options()->(<Values at 0x...owser': None}>, '192.168.1.3', 9042)
-> return options, hostname, port
现在要弄清楚凭据发生了什么;记住我没有改变 Python,我只是给它提供各种输入。
AuthenticationFailed(...e=0100 [Bad credentials] message="Provided username cassandra and/or password are incorrect
单步执行
https://github.com/python/cpython/blob/master/Lib/optparse.py
密码使用 -p 正确解析并存储在 'password' 中。 IP地址和端口在
/usr/lib/python2.7/optparse.py(1405)parse_args()->(<Values at 0x...owser': None}>, ['192.168.1.3', '9042'])
这让我们自然回到离开的地方 cqlsh.py
/usr/local/c4/cassandra/bin/cqlsh.py(2339)read_options()
-> hostname = option_with_default(configs.get, 'connection', 'hostname', DEFAULT_HOST)
一切看起来都很好,然后我们遇到了一些以前从未见过的错误
(Pdb) p len(arguments)
2
(Pdb) p arguments
['192.168.1.3', '9042']
(Pdb) n
NoSectionError: No secti...nnection'
> /usr/local/c4/cassandra/bin/cqlsh.py(2258)option_with_default()
-> return cparser_getter(section, option)
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2259)option_with_default()
-> except ConfigParser.Error:
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2260)option_with_default()
-> return default
(Pdb) p len(arguments)
2
(Pdb) p arguments
['192.168.1.3', '9042']
然而,参数和计数看起来仍然很完美,实际上如我们之前所见返回。从这里继续下去,显示该段驱动了3次,每次都报错。
NoSectionError: No secti...nnection'
> /usr/local/c4/cassandra/bin/cqlsh.py(2258)option_with_default()
-> return cparser_getter(section, option)
(Pdb) n
> /usr/local/c4/cassandra/bin/cqlsh.py(2259)option_with_default()
-> except ConfigParser.Error:
我目前的推测;对 ConfigParser 的调用对之前存储得很好的用户或密码字段产生了不良影响。我希望可以找到问题所在,但我没有时间进行这项工作,所以我会把它留给专业人士。
现在我已经回到
authenticator: AllowAllAuthenticator in cassandra.yaml where
bin/cqlsh 192.168.1.3 9042
让我直接进入 CQLSH。