小编gre*_*inn的帖子

在bash脚本中使用curl并获取curl:(3)在URL中找到非法字符

所以我有一个非常简单的bash脚本,它正在向一个auth服务器发送标题.标题url被写入var,然后在下一个curl调用中使用.当在第一个curl调用中使用var set时,我得到"curl:(3)在URL中找到非法字符".我能够回显var并且所有看起来都很好,我甚至可以重置var(在我下面的示例中)并且它可以工作.

Bash脚本

URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}')

curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
Run Code Online (Sandbox Code Playgroud)

运行上面的例子时,我得到:

curl: (3) Illegal characters found in URL
Run Code Online (Sandbox Code Playgroud)

URL var看起来像这样(没有非法字符)

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534
Run Code Online (Sandbox Code Playgroud)

当我在终端中这样做时它起作用:

$ URL = $(卷曲-i -X GET -H "X-AUTH-用户:MyUserna,E" -H "X-验证密钥:MyAPIKey"" HTTPS://urlToAuthServer.tld/auth/v1.0/ "| grep"X-Storage-Url:"| awk'{print $ 2}')

$ echo $ URL

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534

现在我复制并粘贴字符串并将其重新分配到URL,如此(再次在终端中):

>$ URL="https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534"
>$ curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt
Run Code Online (Sandbox Code Playgroud)

有用.

那么为什么我在第一个例子中得到"curl:(3)在URL中发现的非法字符"错误?

更新 我跑了这个: …

linux bash awk curl

43
推荐指数
2
解决办法
4万
查看次数

门卫应用程序未保存

我让 Doorkeeper 在本地工作,但是一旦部署到生产环境中,我就会遇到一个奇怪的问题。我无法创建新应用程序,请参见下文:

$> app = Doorkeeper::Application.new :name => 'test', :redirect_uri => 'http://test.com'
=> #<Doorkeeper::Application id: nil, name: "test", uid: nil, secret: nil, redirect_uri: "http://test.com", scopes: "", created_at: nil, updated_at: nil>

$> app.save
   (0.8ms)  BEGIN
   (0.8ms)  BEGIN
  Doorkeeper::Application Exists (0.7ms)  SELECT  1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
  Doorkeeper::Application Exists (0.7ms)  SELECT  1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
   (0.4ms)  ROLLBACK
   (0.4ms)  ROLLBACK
=> false
Run Code Online (Sandbox Code Playgroud)

oauth_applications 表是 100% 空的。

我正在服务器上运行它(在本地它按预期工作),如果您需要更多信息,请告诉我。 …

ruby ruby-on-rails oauth-2.0 doorkeeper

5
推荐指数
2
解决办法
774
查看次数

MongoDB 与 Mongoose 限制子文档

我是 MongoDB 和 Mongoose 的菜鸟,所以请原谅我...

我正在使用 Node 和 Express 以及 Mongoose。我有一个包含大量子文档的文档,以至于我的服务器在尝试加载所有子文档时内存不足。所以我想选择子文档的最后 30 个项目。这是我现在拥有的,然后猜测我认为我想要什么......

Device.findOne({ device_id: deviceId }, (err, device) => {
        ....
})
Run Code Online (Sandbox Code Playgroud)

这是一个猜测

Device.findOne({ device_id: deviceId }, { movements: { $slice: 30 } }, (err, device) => {
        ....
})
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒,提前致谢!!!

mongoose mongodb node.js

3
推荐指数
1
解决办法
2106
查看次数

使用 NodeJs 和 Express 进行 SNS 确认订阅

我正在尝试设置对 SNS 主题的订阅,我已在 SNS UI 中添加了 HTTP 订阅,并将其标记为“待确认”。我已经设置了端点来查找正确的标头(如下所示)并且正在工作。我的问题是端点永远不会获得“令牌”,请参见下面的我的代码和日志的输出。

NodeJS(w/express 4.15)测试代码:

router.post('/', (req, res, next) => {
    console.log('-----------------')
    console.log(req.body)
    console.log(req.headers)
    console.log('-----------------')
    if (req.get('x-amz-sns-message-type') == "SubscriptionConfirmation") {
        SNS.confirmSubscription({ Token: req.body.Token, TopicArn: req.get('x-amz-sns-topic-arn') }, (err, finished) => {
            if (err) console.log(err)
        })
    } else {
        console.log(req.body)
    }
})
Run Code Online (Sandbox Code Playgroud)

来自 AWS 的 POST 请求

-----------------
{}
{ host: 'myapp.us-west-2.elasticbeanstalk.com',
  'x-real-ip': '172.XXX.40.XXX',
  'x-forwarded-for': '54.240.XXX.XXX, 172.XXX.40.XXX',
  'content-length': '1604',
  'accept-encoding': 'gzip,deflate',
  'content-type': 'text/plain; charset=UTF-8',
  'user-agent': 'Amazon Simple Notification Service Agent',
  'x-amz-sns-message-id': '493b2a00-a99f-4cf3-ac9a-aad8ad6ee115',
  'x-amz-sns-message-type': 'SubscriptionConfirmation',
  'x-amz-sns-topic-arn': 'arn:aws:sns:us-west-2:4868XXXXXXXX:mysnstopic',
  'x-forwarded-port': …
Run Code Online (Sandbox Code Playgroud)

node.js amazon-sns express

2
推荐指数
1
解决办法
2983
查看次数