You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Robert Munteanu <ro...@apache.org> on 2020/02/12 10:26:32 UTC

Gogo shell + telnet without a local TTY

Hi,

I am trying to open up access to the gogo shell via telnet without
allocating a TTY.

The problem with the TTY is that is there is none the shell will get an
interrupt, therefore shutting down the OSGi framework. I am running on
a container platform, so no much luck in getting that changed.

I have tried by adding the following bundles:

    "org.apache.felix/org.apache.felix.gogo.command/1.1.0"
    "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2"
    "org.apache.felix/org.apache.felix.shell.remote/1.2.0"

Connecting via telnet results in a connection closed

$ telnet localhost 6666
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Good Bye!
Connection closed by foreign host.

and an uncaught exception on the console for the app

org.apache.felix.gogo.runtime.CommandNotFoundException: Command not found: gosh
	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:596)
	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
	at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
	at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

Adding back the "org.apache.felix/org.apache.felix.gogo.shell/1.1.2"
bundle fixes the issue, but requires an interactive TTY.

I tried replacing the gogo shell bundle with org.apache.felix.shell,
but that is not aware of the gogo commands, and is therefore not
useful.

I'm out of ideas at this point, so how can I use the gogo shell via
telnet without a local TTY?

Thanks,
Robert


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Gogo shell + telnet without a local TTY

Posted by Robert Munteanu <ro...@apache.org>.
Thanks, Ray,

Sometimes the obvious gets overlooked.

On Thu, 2020-02-13 at 09:40 -0500, Raymond Auge wrote:
> I'm not sure this is useful for you, but you say you are on a
> container
> platform. Have you tried to forward the port for gogo outside the
> container?
> 
> For docker this is with the -p flag.
> 
> e.g.
> -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
> -p ...

Yup, I completely forgot that I needed to publish the port. So, just to
recap, here is what I needed to do:

1. Add the correct bundles

    "org.apache.felix/org.apache.felix.gogo.command/1.1.0",
    "org.apache.felix/org.apache.felix.gogo.shell/1.1.2",
    "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2",
    "org.apache.felix/org.apache.felix.shell.remote/1.2.0"

2. Instruct gogo to not open an interactive shell

-Dgosh.args="--nointeractive"

3. Instruct the remote shell to bind to all IPs

Since this is running in a container, we won't be connecting from
localhost, and I don't know the IP address beforehand.

-Dosgi.shell.telnet.ip="0.0.0.0"

This means that I am on my own regarding securing access if the port is
exposed.

4. Expose the port in the Dockerfile

EXPOSE 6666

5. Publish the port when running the application

$ docker run -p 6666 ....

Now I have a working remote shell without a TTY.

Thanks Ray and Bernd for you help.

Robert


> HTH
> - Ray
> 
> On Thu, Feb 13, 2020 at 9:27 AM Robert Munteanu <ro...@apache.org>
> wrote:
> 
> > Hello Bernd,
> > 
> > On Wed, 2020-02-12 at 20:22 +0000, Bernd Eckenfels wrote:
> > > Can you describe why you think you need a tty? What fails if you
> > > don't have one? Do use "karaf console" instead of "karaf start"?
> > > Do
> > > you have ansi.so load problems?
> > 
> > Note - I don't use karaf, but instead the bundles I indicated in my
> > previous email.
> > 
> > I think that it needs a TTY because as soon as I get the note that
> > the
> > framework has started, the application immediately starts shutting
> > down. Here's the message printed out:
> > 
> > [INFO] Framework started
> > ____________________________
> > Welcome to Apache Felix Gogo
> > 
> > g! gosh: stopping framework
> > 
> > 
> > I have associated that with a 'close' signal sent to the console
> > due to
> > no TTY being available. I may be wrong though, but I did not find a
> > solution.
> > 
> > I did a bit of digging and found out that I can add
> > 
> >   -Dgosh.args="--nointeractive"
> > 
> > to my startup script and then the container runs without the need
> > to
> > pas the it flags.
> > 
> > However, even though the remote shell bundle is started, I am
> > unable to
> > telnet
> > 
> > [FelixDispatchQueue] INFO  E.B.org.apache.felix.gogo.runtime -
> > BundleEvent
> > STARTED
> > [FelixDispatchQueue] INFO  E.B.org.apache.felix.shell.remote -
> > BundleEvent
> > RESOLVED
> > [FelixDispatchQueue] INFO  E.B.org.apache.felix.shell.remote -
> > BundleEvent
> > STARTED
> > 
> > $ telnet localhost 6666
> > Trying ::1...
> > telnet: connect to address ::1: Connection refused
> > Trying 127.0.0.1...
> > telnet: connect to address 127.0.0.1: Connection refused
> > 
> > For reference, these are the bundles I am using
> > 
> >     "org.apache.felix/org.apache.felix.gogo.command/1.1.0",
> >     "org.apache.felix/org.apache.felix.gogo.shell/1.1.2",
> >     "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2",
> >     "org.apache.felix/org.apache.felix.shell.remote/1.2.0
> > 
> > Thanks,
> > Robert
> > 
> > > Gruss
> > > Bernd
> > > 
> > > 
> > > --
> > > http://bernd.eckenfels.net
> > > ________________________________
> > > Von: Robert Munteanu <ro...@apache.org>
> > > Gesendet: Wednesday, February 12, 2020 11:26:32 AM
> > > An: users@felix.apache.org <us...@felix.apache.org>
> > > Betreff: Gogo shell + telnet without a local TTY
> > > 
> > > Hi,
> > > 
> > > I am trying to open up access to the gogo shell via telnet
> > > without
> > > allocating a TTY.
> > > 
> > > The problem with the TTY is that is there is none the shell will
> > > get
> > > an
> > > interrupt, therefore shutting down the OSGi framework. I am
> > > running
> > > on
> > > a container platform, so no much luck in getting that changed.
> > > 
> > > I have tried by adding the following bundles:
> > > 
> > >     "org.apache.felix/org.apache.felix.gogo.command/1.1.0"
> > >     "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2"
> > >     "org.apache.felix/org.apache.felix.shell.remote/1.2.0"
> > > 
> > > Connecting via telnet results in a connection closed
> > > 
> > > $ telnet localhost 6666
> > > Trying ::1...
> > > telnet: connect to address ::1: Connection refused
> > > Trying 127.0.0.1...
> > > Connected to localhost.
> > > Escape character is '^]'.
> > > Good Bye!
> > > Connection closed by foreign host.
> > > 
> > > and an uncaught exception on the console for the app
> > > 
> > > org.apache.felix.gogo.runtime.CommandNotFoundException: Command
> > > not
> > > found: gosh
> > >         at
> > > org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:596
> > > )
> > >         at
> > > org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.ja
> > > va:5
> > > 26)
> > >         at
> > > org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
> > >         at
> > > org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
> > >         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
> > >         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
> > >         at
> > > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264
> > > )
> > >         at
> > > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Threa
> > > dPoo
> > > lExecutor.java:1128)
> > >         at
> > > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Thre
> > > adPo
> > > olExecutor.java:628)
> > >         at java.base/java.lang.Thread.run(Thread.java:834)
> > > 
> > > Adding back the
> > > "org.apache.felix/org.apache.felix.gogo.shell/1.1.2"
> > > bundle fixes the issue, but requires an interactive TTY.
> > > 
> > > I tried replacing the gogo shell bundle with
> > > org.apache.felix.shell,
> > > but that is not aware of the gogo commands, and is therefore not
> > > useful.
> > > 
> > > I'm out of ideas at this point, so how can I use the gogo shell
> > > via
> > > telnet without a local TTY?
> > > 
> > > Thanks,
> > > Robert
> > > 
> > > 
> > > ---------------------------------------------------------------
> > > ------
> > > To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> > > For additional commands, e-mail: users-help@felix.apache.org
> > > 
> > 
> > -----------------------------------------------------------------
> > ----
> > To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> > For additional commands, e-mail: users-help@felix.apache.org
> > 
> > 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Gogo shell + telnet without a local TTY

Posted by Raymond Auge <ra...@liferay.com>.
I'm not sure this is useful for you, but you say you are on a container
platform. Have you tried to forward the port for gogo outside the container?

For docker this is with the -p flag.

e.g.
-p <host_port1>:<container_port1> -p <host_port2>:<container_port2> -p ...

HTH
- Ray

On Thu, Feb 13, 2020 at 9:27 AM Robert Munteanu <ro...@apache.org> wrote:

> Hello Bernd,
>
> On Wed, 2020-02-12 at 20:22 +0000, Bernd Eckenfels wrote:
> > Can you describe why you think you need a tty? What fails if you
> > don't have one? Do use "karaf console" instead of "karaf start"? Do
> > you have ansi.so load problems?
>
> Note - I don't use karaf, but instead the bundles I indicated in my
> previous email.
>
> I think that it needs a TTY because as soon as I get the note that the
> framework has started, the application immediately starts shutting
> down. Here's the message printed out:
>
> [INFO] Framework started
> ____________________________
> Welcome to Apache Felix Gogo
>
> g! gosh: stopping framework
>
>
> I have associated that with a 'close' signal sent to the console due to
> no TTY being available. I may be wrong though, but I did not find a
> solution.
>
> I did a bit of digging and found out that I can add
>
>   -Dgosh.args="--nointeractive"
>
> to my startup script and then the container runs without the need to
> pas the it flags.
>
> However, even though the remote shell bundle is started, I am unable to
> telnet
>
> [FelixDispatchQueue] INFO  E.B.org.apache.felix.gogo.runtime - BundleEvent
> STARTED
> [FelixDispatchQueue] INFO  E.B.org.apache.felix.shell.remote - BundleEvent
> RESOLVED
> [FelixDispatchQueue] INFO  E.B.org.apache.felix.shell.remote - BundleEvent
> STARTED
>
> $ telnet localhost 6666
> Trying ::1...
> telnet: connect to address ::1: Connection refused
> Trying 127.0.0.1...
> telnet: connect to address 127.0.0.1: Connection refused
>
> For reference, these are the bundles I am using
>
>     "org.apache.felix/org.apache.felix.gogo.command/1.1.0",
>     "org.apache.felix/org.apache.felix.gogo.shell/1.1.2",
>     "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2",
>     "org.apache.felix/org.apache.felix.shell.remote/1.2.0
>
> Thanks,
> Robert
>
> > Gruss
> > Bernd
> >
> >
> > --
> > http://bernd.eckenfels.net
> > ________________________________
> > Von: Robert Munteanu <ro...@apache.org>
> > Gesendet: Wednesday, February 12, 2020 11:26:32 AM
> > An: users@felix.apache.org <us...@felix.apache.org>
> > Betreff: Gogo shell + telnet without a local TTY
> >
> > Hi,
> >
> > I am trying to open up access to the gogo shell via telnet without
> > allocating a TTY.
> >
> > The problem with the TTY is that is there is none the shell will get
> > an
> > interrupt, therefore shutting down the OSGi framework. I am running
> > on
> > a container platform, so no much luck in getting that changed.
> >
> > I have tried by adding the following bundles:
> >
> >     "org.apache.felix/org.apache.felix.gogo.command/1.1.0"
> >     "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2"
> >     "org.apache.felix/org.apache.felix.shell.remote/1.2.0"
> >
> > Connecting via telnet results in a connection closed
> >
> > $ telnet localhost 6666
> > Trying ::1...
> > telnet: connect to address ::1: Connection refused
> > Trying 127.0.0.1...
> > Connected to localhost.
> > Escape character is '^]'.
> > Good Bye!
> > Connection closed by foreign host.
> >
> > and an uncaught exception on the console for the app
> >
> > org.apache.felix.gogo.runtime.CommandNotFoundException: Command not
> > found: gosh
> >         at
> > org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:596)
> >         at
> > org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:5
> > 26)
> >         at
> > org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
> >         at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
> >         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
> >         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
> >         at
> > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> >         at
> > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoo
> > lExecutor.java:1128)
> >         at
> > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPo
> > olExecutor.java:628)
> >         at java.base/java.lang.Thread.run(Thread.java:834)
> >
> > Adding back the "org.apache.felix/org.apache.felix.gogo.shell/1.1.2"
> > bundle fixes the issue, but requires an interactive TTY.
> >
> > I tried replacing the gogo shell bundle with org.apache.felix.shell,
> > but that is not aware of the gogo commands, and is therefore not
> > useful.
> >
> > I'm out of ideas at this point, so how can I use the gogo shell via
> > telnet without a local TTY?
> >
> > Thanks,
> > Robert
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> > For additional commands, e-mail: users-help@felix.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>

-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)

Re: Gogo shell + telnet without a local TTY

Posted by Robert Munteanu <ro...@apache.org>.
Hello Bernd,

On Wed, 2020-02-12 at 20:22 +0000, Bernd Eckenfels wrote:
> Can you describe why you think you need a tty? What fails if you
> don't have one? Do use "karaf console" instead of "karaf start"? Do
> you have ansi.so load problems?

Note - I don't use karaf, but instead the bundles I indicated in my
previous email.

I think that it needs a TTY because as soon as I get the note that the
framework has started, the application immediately starts shutting
down. Here's the message printed out:

[INFO] Framework started
____________________________
Welcome to Apache Felix Gogo

g! gosh: stopping framework


I have associated that with a 'close' signal sent to the console due to
no TTY being available. I may be wrong though, but I did not find a
solution.

I did a bit of digging and found out that I can add

  -Dgosh.args="--nointeractive"

to my startup script and then the container runs without the need to
pas the it flags.

However, even though the remote shell bundle is started, I am unable to
telnet

[FelixDispatchQueue] INFO  E.B.org.apache.felix.gogo.runtime - BundleEvent STARTED
[FelixDispatchQueue] INFO  E.B.org.apache.felix.shell.remote - BundleEvent RESOLVED
[FelixDispatchQueue] INFO  E.B.org.apache.felix.shell.remote - BundleEvent STARTED

$ telnet localhost 6666
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

For reference, these are the bundles I am using

    "org.apache.felix/org.apache.felix.gogo.command/1.1.0",
    "org.apache.felix/org.apache.felix.gogo.shell/1.1.2",
    "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2",
    "org.apache.felix/org.apache.felix.shell.remote/1.2.0

Thanks,
Robert

> Gruss
> Bernd
> 
> 
> --
> http://bernd.eckenfels.net
> ________________________________
> Von: Robert Munteanu <ro...@apache.org>
> Gesendet: Wednesday, February 12, 2020 11:26:32 AM
> An: users@felix.apache.org <us...@felix.apache.org>
> Betreff: Gogo shell + telnet without a local TTY
> 
> Hi,
> 
> I am trying to open up access to the gogo shell via telnet without
> allocating a TTY.
> 
> The problem with the TTY is that is there is none the shell will get
> an
> interrupt, therefore shutting down the OSGi framework. I am running
> on
> a container platform, so no much luck in getting that changed.
> 
> I have tried by adding the following bundles:
> 
>     "org.apache.felix/org.apache.felix.gogo.command/1.1.0"
>     "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2"
>     "org.apache.felix/org.apache.felix.shell.remote/1.2.0"
> 
> Connecting via telnet results in a connection closed
> 
> $ telnet localhost 6666
> Trying ::1...
> telnet: connect to address ::1: Connection refused
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.
> Good Bye!
> Connection closed by foreign host.
> 
> and an uncaught exception on the console for the app
> 
> org.apache.felix.gogo.runtime.CommandNotFoundException: Command not
> found: gosh
>         at
> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:596)
>         at
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:5
> 26)
>         at
> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
>         at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
>         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
>         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
>         at
> java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>         at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoo
> lExecutor.java:1128)
>         at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPo
> olExecutor.java:628)
>         at java.base/java.lang.Thread.run(Thread.java:834)
> 
> Adding back the "org.apache.felix/org.apache.felix.gogo.shell/1.1.2"
> bundle fixes the issue, but requires an interactive TTY.
> 
> I tried replacing the gogo shell bundle with org.apache.felix.shell,
> but that is not aware of the gogo commands, and is therefore not
> useful.
> 
> I'm out of ideas at this point, so how can I use the gogo shell via
> telnet without a local TTY?
> 
> Thanks,
> Robert
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Gogo shell + telnet without a local TTY

Posted by Bernd Eckenfels <ec...@zusammenkunft.net>.
Can you describe why you think you need a tty? What fails if you don't have one? Do use "karaf console" instead of "karaf start"? Do you have ansi.so load problems?

BTW, with "docker -it" you can request a container try, afaik. (But I don't see why you would need one for remote console)

Gruss
Bernd


--
http://bernd.eckenfels.net
________________________________
Von: Robert Munteanu <ro...@apache.org>
Gesendet: Wednesday, February 12, 2020 11:26:32 AM
An: users@felix.apache.org <us...@felix.apache.org>
Betreff: Gogo shell + telnet without a local TTY

Hi,

I am trying to open up access to the gogo shell via telnet without
allocating a TTY.

The problem with the TTY is that is there is none the shell will get an
interrupt, therefore shutting down the OSGi framework. I am running on
a container platform, so no much luck in getting that changed.

I have tried by adding the following bundles:

    "org.apache.felix/org.apache.felix.gogo.command/1.1.0"
    "org.apache.felix/org.apache.felix.gogo.runtime/1.1.2"
    "org.apache.felix/org.apache.felix.shell.remote/1.2.0"

Connecting via telnet results in a connection closed

$ telnet localhost 6666
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Good Bye!
Connection closed by foreign host.

and an uncaught exception on the console for the app

org.apache.felix.gogo.runtime.CommandNotFoundException: Command not found: gosh
        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:596)
        at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
        at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
        at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
        at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

Adding back the "org.apache.felix/org.apache.felix.gogo.shell/1.1.2"
bundle fixes the issue, but requires an interactive TTY.

I tried replacing the gogo shell bundle with org.apache.felix.shell,
but that is not aware of the gogo commands, and is therefore not
useful.

I'm out of ideas at this point, so how can I use the gogo shell via
telnet without a local TTY?

Thanks,
Robert


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org