首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从安卓应用程序到电脑的SSHing

从安卓应用程序到电脑的SSHing
EN

Stack Overflow用户
提问于 2017-08-03 17:37:22
回答 1查看 165关注 0票数 0

我遵循了一些关于构建ssh应用程序的在线教程,但不幸的是,生成的应用程序可以很好地编译和构建,但不能正常运行。我正在尝试使用联想TAB A7连接到运行ubuntu的电脑。使用的IDE是android studio。该计算机安装了ssh服务器,并且以前通过SSH从其他计算机进行过控制。我在这个应用程序中输入的任何命令都不起作用。我还没有接触布局文件,因为我现在只是尝试发送ssh命令,所以它只是hello world的默认设置。任何帮助都将不胜感激!

android清单文件如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="robotics.c">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:hardwareAccelerated="true"
        android:theme="@style/AppTheme">

        <activity android:name="main">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

activity java文件如下:

代码语言:javascript
复制
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.ByteArrayOutputStream;
import java.util.Properties;
public class mainmenu extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mainmenu);
        new AsyncTask<Integer, Void, Void>() {
            @Override
            protected Void doInBackground(Integer... params) {
                try {
                    executeRemoteCommand("d46", "password", "192.168.0.209", 22);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute(1);
    }

    public static String executeRemoteCommand(String username, String password, String hostname, int port)
            throws Exception {
        JSch jsch = new JSch();
        Session session = jsch.getSession(username, hostname, port);
        session.setPassword(password);

        // Avoid asking for key confirmation
        Properties prop = new Properties();
        prop.put("StrictHostKeyChecking", "no");
        session.setConfig(prop);

        session.connect();

        // SSH Channel
        ChannelExec channelssh = (ChannelExec)
                session.openChannel("exec");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        channelssh.setOutputStream(baos);

        // Execute command
        channelssh.setCommand("nohup python /home/d46/catkin_ws/control/py_script/controller_walking.py");
        //System.out.print("cd /home/pi/Desktop | nohup python red.py");
        channelssh.connect();
        channelssh.disconnect();

        return baos.toString();
    }

LogCat输出如下:

代码语言:javascript
复制
 08-03 10:03:30.599 21960-21960/? E/cutils: to chown(/mnt/shell/emulated/0, 0, 0)
    08-03 10:03:30.600 21960-21960/? E/cutils: to chown(/mnt/shell/emulated/obb, 0, 0)
    08-03 10:03:30.601 21960-21960/? E/cutils: to chown(/storage/emulated/0/Android, 0, 0)
    08-03 10:03:30.602 21960-21960/? E/cutils: to chown(/storage/emulated/0/Android/obb, 0, 0)
    08-03 10:03:30.635 21960-21960/robotics.c E/Trace: error opening trace file: No such file or directory (2)
    08-03 10:03:30.681 21960-21960/robotics.cW/asset: AssetManager-->addDefaultAssets CIP path not exsit!
    08-03 10:03:30.699 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve interface method 16064: Landroid/view/Window$Callback;.onProvideKeyboardShortcuts (Ljava/util/List;Landroid/view/Menu;I)V
    08-03 10:03:30.699 21960-21960/robotics.c W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
    08-03 10:03:30.699 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve interface method 16066: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
    08-03 10:03:30.699 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve interface method 16070: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
    08-03 10:03:30.700 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 477: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
    08-03 10:03:30.701 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 499: Landroid/content/res/TypedArray;.getType (I)I
    08-03 10:03:30.709 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 268: Landroid/content/Context;.createDeviceProtectedStorageContext ()Landroid/content/Context;
    08-03 10:03:30.710 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 273: Landroid/content/Context;.getCodeCacheDir ()Ljava/io/File;
    08-03 10:03:30.710 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 274: Landroid/content/Context;.getColor (I)I
    08-03 10:03:30.710 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 275: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList;
    08-03 10:03:30.710 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 277: Landroid/content/Context;.getDataDir ()Ljava/io/File;
    08-03 10:03:30.710 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 278: Landroid/content/Context;.getDrawable (I)Landroid/graphics/drawable/Drawable;
    08-03 10:03:30.711 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 280: Landroid/content/Context;.getExternalCacheDirs ()[Ljava/io/File;
    08-03 10:03:30.711 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 282: Landroid/content/Context;.getExternalFilesDirs (Ljava/lang/String;)[Ljava/io/File;
    08-03 10:03:30.711 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 285: Landroid/content/Context;.getNoBackupFilesDir ()Ljava/io/File;
    08-03 10:03:30.711 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 287: Landroid/content/Context;.getObbDirs ()[Ljava/io/File;
    08-03 10:03:30.711 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 298: Landroid/content/Context;.isDeviceProtectedStorage ()Z
    08-03 10:03:30.747 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 16496: Landroid/widget/FrameLayout;.startActionModeForChild (Landroid/view/View;Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
    08-03 10:03:30.755 21960-21960/robotics.cW/dalvikvm: VFY: unable to resolve virtual method 275: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList;
    08-03 10:03:30.761 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 440: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
    08-03 10:03:30.761 21960-21960/robotics.c W/dalvikvm: VFY: unable to resolve virtual method 442: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
    08-03 10:03:30.775 21960-21960/robotics.c E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
    08-03 10:03:30.775 21960-21960/robotics.cW/dalvikvm: VFY: unable to resolve instanceof 148 (Landroid/graphics/drawable/RippleDrawable;) in Landroid/support/v7/widget/AppCompatImageHelper;
    08-03 10:03:30.843 21960-21960/robotics.c E/linker: load_library(linker.cpp:759): library "libmaliinstr.so" not found

                                                                      [ 08-03 10:03:30.845 21960:0x55c8 E/         ]
                                                                      appName=robotics.c, acAppName=com.android.cts.openglperf

                                                                      [ 08-03 10:03:30.845 21960:0x55c8 E/         ]
                                                                      0

                                                                      [ 08-03 10:03:30.845 21960:0x55c8 E/         ]
                                                                      appName=robotics.c, acAppName=com.android.browser

                                                                      [ 08-03 10:03:30.845 21960:0x55c8 E/         ]
                                                                      0
    08-03 10:05:00.907 21960-21981/robotics.c W/System.err: com.jcraft.jsch.JSchException: java.net.SocketTimeoutException: failed to connect to /192.168.0.201 (port 22) after 90000ms
    08-03 10:05:00.908 21960-21981/robotics.c W/System.err:     at com.jcraft.jsch.Util.createSocket(Util.java:349)
    08-03 10:05:00.908 21960-21981/robotics.c W/System.err:     at com.jcraft.jsch.Session.connect(Session.java:215)
    08-03 10:05:00.910 21960-21981/robotics.c W/System.err:     at com.jcraft.jsch.Session.connect(Session.java:183)
    08-03 10:05:00.910 21960-21981/robotics.c W/System.err:     at robotics.c.mainmenu.executeRemoteCommand(mainmenu.java:44)
    08-03 10:05:00.910 21960-21981/robotics.c W/System.err:     at rrobotics.c.mainmenu$1.doInBackground(mainmenu.java:24)
    08-03 10:05:00.911 21960-21981/robotics.c W/System.err:     at robotics.c.mainmenu$1.doInBackground(mainmenu.java:20)
    08-03 10:05:00.911 21960-21981/robotics.c W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
    08-03 10:05:00.911 21960-21981/robotics.c W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    08-03 10:05:00.911 21960-21981/robotics.c W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
    08-03 10:05:00.914 21960-21981/robotics.c W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    08-03 10:05:00.915 21960-21981/robotics.c W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    08-03 10:05:00.916 21960-21981/robotics.c W/System.err:     at java.lang.Thread.run(Thread.java:838)
    08-03 10:05:00.916 21960-21981/robotics.c W/System.err: Caused by: java.net.SocketTimeoutException: failed to connect to /192.168.0.201 (port 22) after 90000ms
    08-03 10:05:00.917 21960-21981/robotics.c W/System.err:     at libcore.io.IoBridge.connectErrno(IoBridge.java:176)
    08-03 10:05:00.918 21960-21981/robotics.cW/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:112)
    08-03 10:05:00.918 21960-21981/robotics.c W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
    08-03 10:05:00.918 21960-21981/robotics.c W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    08-03 10:05:00.918 21960-21981/robotics.c W/System.err:     at java.net.Socket.startupSocket(Socket.java:578)
    08-03 10:05:00.918 21960-21981/robotics.c W/System.err:     at java.net.Socket.tryAllAddresses(Socket.java:130)
    08-03 10:05:00.919 21960-21981/robotics.c W/System.err:     at java.net.Socket.<init>(Socket.java:180)
    08-03 10:05:00.919 21960-21981/robotics.c W/System.err:     at java.net.Socket.<init>(Socket.java:152)
    08-03 10:05:00.919 21960-21981/robotics.c W/System.err:     at com.jcraft.jsch.Util.createSocket(Util.java:343)
    08-03 10:05:00.919 21960-21981/robotics.c W/System.err:     ... 11 more
EN

回答 1

Stack Overflow用户

发布于 2017-08-04 18:10:11

我解决这个问题的方法是使用另一款设备-a nexus,它的API为22,而联想平板电脑的API为17 :)软件运行得很好,这只是一个硬件故障。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45480370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档