我在此代码中遇到问题
public void setTmbhUserFtp(View v) {
Spinner spinner = (Spinner) findViewById(R.id.spinner);
Server server = serverlist.get(spinner.getSelectedItemPosition() - 1);
EditText EditAdduser = (EditText) findViewById(R.id.EditAdduser);
EditText EditPassworduser = (EditText) findViewById(R.id.EditPassworduser);
String sTextAdduser = EditAdduser.getText().toString();
String sTextPassworduser = EditPassworduser.getText().toString();
if (server != null && sTextAdduser.length() > 0
&& sTextPassworduser.length() > 0) {
final String ADDUSER = "sh /home/add_user.sh".concat(sTextAdduser) .concat(sTextPassworduser);
FtpConnect u = new FtpConnect();
Command o = new Command(getResources().getText(R.string.adduser)
.toString(), ADDUSER, server);
u.setCommand(ADDUSER);
pd = ProgressDialog.show(actual,
getResources().getString(R.string.PleaseWait), o.getName());
actualThreadCommand = o;
Thread thread = new Thread(actual);
thread.start();
} else {
Toast.makeText(getBaseContext(),
getResources().getText(R.string.gagal), Toast.LENGTH_LONG)
.show();
}
}
该代码在linux中用于执行
sh /home/add_user.sh username password
但是当我从我的Android尝试用户名和密码是一个
所以代码就像这样
sh /home/add_user.sh usernamepassword
如果用户名是irfan,密码是irfan,则代码被检测
sh /home/add_user.sh irfanirfan
所以用户名是irfanirfan而且没有密码
代码add_user.sh是
useradd $1; echo -e "$2\n$2" | passwd $1
如何解决
final String ADDUSER = "sh /home/add_user.sh ".concat(sTextAdduser) .concat(sTextPassworduser);
<。>在.concat(sTextAdduser)之后必须是空格
所以在linux中会执行
sh /home/add_user.sh irfan irfan
答案 0 :(得分:1)
通过这种方式,您可以解决问题:
final String ADDUSER = "sh /home/add_user.sh "+sTextAdduser+" "+sTextPassworduser;
答案 1 :(得分:0)
final String ADDUSER = "sh /home/add_user.sh ".concat(sTextAdduser)
.concat(" ")
.concat(sTextPassworduser);
答案 2 :(得分:0)
final String ADDUSER = "sh /home/add_user.sh "+sTextAdduser+"\\ "+sTextPassworduser;
在linux中的任何路径中使用backSlash后跟addSpace空格。