Tag: bash

使用预先签名的URL通过curl上传到s3(获得403)

我正在使用curl调用Java ReST API来检索URL。 然后,Java使用我的S3凭据生成用于S3上载的预签名URL,并在ReST回复中返回该URL。 Curl获取URL并使用它上传到S3,但S3返回403“我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。” 这是我用来生成预签名URL的代码: public class S3Util { static final AmazonS3 s3 = new AmazonS3Client( new AWSCredentials() { @Override public String getAWSAccessKeyId() { return “XXXXXXX”; } @Override public String getAWSSecretKey() { return “XXXXXXXXXXXXXX”; } }); static final String BUCKET = “XXXXXXXXXXXXXXXXXXXXXXXXXXX”; static public URL getMediaChunkURL( MediaChunk mc, HttpMethod method ) { String key […]

Blowfish在Java / Scala中加密并在bash中解密

我正在尝试构建一个工具来解密scala应用程序中加密的bash中的内容: 但首先,我要在两种语言中成功编码相同的消息并使它们相等: 鉴于密码“0123456789abcdef” (hex:“30313233343536373839616263646566”和字节[]:[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]) scala> import javax.crypto.Cipher scala> import javax.crypto.spec.SecretKeySpec scala> val cipher = Cipher.getInstance(“Blowfish”) scala> cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(“0123456789abcdef”.getBytes(“utf-8”), “Blowfish”)) scala> javax.xml.bind.DatatypeConverter.printBase64Binary(cipher.doFinal(“message”.getBytes(“utf-8”))) res7: String = K679Jz06jmc= 但我无法在bash中使用openssl重现相同的内容。 $ echo “message” | openssl enc -a -e -blowfish -nosalt -nopad -k “0123456789abcdef” LJ3iFJ2/mYk= $ echo “message” | openssl enc -a -e -blowfish -nosalt -nopad -k “30313233343536373839616263646566” JkkJgYv3fQg= […]

POSIX shell就像在Java中实现一样

有没有人知道POSIX shell的实现,就像用Java编写脚本的语言一样? 如果没有,有人知道我可能错过了某个地方是否有ANTLR或JavaCC语法吗? 编辑:我知道我有Jython,JRuby,Groovy,JavaScript可用于编写脚本,但它们都没有类似bash的语法。 这不会用于将Java代码编写在一起,而是允许人们运行预定义的命令,这些命令可以通过大型第三方媒体资产管理系统进行操作。 我想运行如下: ls | grep “something” > output 其中ls和grep是Java命令。 (这仅用于说明目的) 谢谢

从java运行bash脚本

我的问题很简单,当我尝试从Java运行.sh脚本时,脚本不会执行。 如果我将我的脚本更改为简单的linux命令,例如ls -all,它可以正常工作,所以我猜我在脚本中使用了一个错误的命令,这会停止执行。 请帮忙。 大卫 Java代码: String cmd = “bash /home/david/burza/getter.sh”; try { Process proc = Runtime.getRuntime().exec(new String[] {“/bin/sh”, “-c”, cmd}); BufferedReader read = new BufferedReader(new InputStreamReader(proc.getInputStream())); try { proc.waitFor(); } catch (InterruptedException e) { System.out.println(e.getMessage()); } while (read.ready()) { System.out.println(read.readLine()); } } catch (IOException e) { System.out.println(e.getMessage()); } Bash脚本: #! /bin/bash wget -O data1.html […]

AES密钥派生函数

我有一个使用openssl加密数据的bash脚本,以及解密结果的Java代码。 基于我之前的post ,我现在能够在openssl中输入密码,并将生成的密钥/ iv复制到Java中。 这依赖于在openssl中使用-naltalt选项。 我想删除该选项,并从openssl获取密码/ salt / iv并将其传递给JDK密钥派生函数。 这是我正在使用的openssl脚本: #!/bin/bash openssl enc -aes-128-cbc -in test -out test.enc -p 当我运行它并输入密码时,它会打印出以下内容。 salt=820E005048F1DF74 key=16023FBEB58DF4EB36229286419F4589 iv=DE46F8904224A0E86E8F8F08F03BCC1A 当我在Java中尝试相同的密码/ salt / iv时,我无法解密test.enc。 我在这篇文章中根据@erickson的答案尝试了Java代码。 这是片段。 SecretKeyFactory factory = SecretKeyFactory.getInstance(“PBKDF2WithHmacSHA1”); KeySpec spec = new PBEKeySpec(password, salt, 1024, 128); SecretKey tmp = factory.generateSecret(spec); SecretKey secret = new SecretKeySpec(tmp.getEncoded(), “AES”); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); […]

运行具有外部依赖项的Scala脚本

我在/Users/joe/.scala/lib下面有以下jar: commons-codec-1.4.jar httpclient-4.1.1.jar httpcore-4.1.jar commons-logging-1.1.1.jar httpclient-cache-4.1.1.jar httpmime-4.1.1.jar 下面是我用scala编写的test.sh。 #!/bin/sh -v L=`cd /Users/joe/.scala/lib;pwd` cp=`echo $L/*.jar|sed ‘s/ /:/g’` echo $cp exec scala -classpath $cp $0 $@ !# println(new org.apache.commons.httpclient.HttpClient()) 这是我得到的错误: $ ./test.sh #!/bin/sh -v L=`cd /Users/joe/.scala/lib;pwd` cd /Users/joe/.scala/lib;pwd cp=`echo $L/*.jar|sed ‘s/ /:/g’` echo $L/*.jar|sed ‘s/ /:/g’ echo $cp /Users/joe/.scala/lib/commons-codec-1.4.jar:/Users/joe/.scala/lib/commons-logging-1.1.1.jar:/Users/joe/.scala/lib/httpclient-4.1.1.jar:/Users/joe/.scala/lib/httpclient-cache-4.1.1.jar:/Users/joe/.scala/lib/httpcore-4.1.jar:/Users/joe/.scala/lib/httpmime-4.1.1.jar exec scala -classpath $cp $0 $@ /Users/joe/Desktop/scala/./test.sh:7: error: […]

在java脚本中执行shell脚本或从浏览器触发扫描器

我有一个用于扫描扫描仪(硬件)文档的shell脚本。 Shell脚本存储在每个客户端系统中。 假设客户端扫描应用程序意味着我必须运行该shell脚本并将扫描的应用程序存储在服务器中。 我正在使用Html,JavaScript和servlet。 如果我从servlet运行shell脚本,它将在服务器中执行shell脚本。 我想从客户端系统执行shell脚本。 我想如果我们使用JavaScript,我们可以做到这一点。 有没有办法做到这一点? 除了shell脚本之外,我们如何在浏览器中触发扫描程序?

将变量从Java传递给Shell脚本

我正在尝试从Java代码运行shell脚本。 目前我在脚本中手动提供数据,但我希望能够从运行脚本的Java代码中提供变量。 这是Java代码和脚本: public static void main(String[] args) { try { ProcessBuilder pb = new ProcessBuilder( “/home/najib/upload.sh”); Process p = pb.start(); p.waitFor(); System.out.println(“Script executed successfully”); } catch (Exception e) { e.printStackTrace(); } } shell代码: #!/bin/bash /usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec=”set AUTOCOMMIT MANUAL;”& /usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec=”delete from DB.DBA.load_list;”& /usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec=”SPARQL CREATE […]

ant exec任务错误代码= 3

我试图从ant目标调用bash脚本。 这是我的目标: 我的bash脚本是: #!/bin/bash DEST_FOLDER=’./target/checkstyle’ CLASSES_FILE=’classes.txt’ REPORT_FILE=’report.xml’ mkdir -p “$DEST_FOLDER” rm -f “$DEST_FOLDER/$CLASSES_FILE” rm -f “$DEST_FOLDER/$REPORT_FILE” find ./project -name “*.java” >> “$DEST_FOLDER/$CLASSES_FILE” while read p; do java -jar ./utilJars/checkstyle-6.5-all.jar -c ./sun_checks.xml -f xml $p >> “$DEST_FOLDER/$REPORT_FILE” done < $DEST_FOLDER/$CLASSES_FILE 键入./checkStyle时一切正常,但是当我尝试“ant report”时会出现以下错误: BUILD FAILED /home/luci/workspace/operations/build.xml:60: exec returned: 3 Total time: 4 seconds 我在谷歌搜索,该代码似乎是“permision否认”,但我不知道我怎么能解决这个问题。

如何在java程序中将参数传递给shell脚本

我试图运行这个在运行时调用shell脚本的java代码。 当我在终端中运行脚本时,我将参数传递给脚本 码: ./test.sh argument1 java代码: public class scriptrun { public static void main(String[] args) { try { Process proc = Runtime.getRuntime().exec(“./test.sh”); System.out.println(“Print Test Line.”); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } } 如何在java代码中传递脚本的参数?