I posted the wrong code

I tried also something simple like that:
   cmd := exec.Command(binPath, "-i") //bin/sh -i
   cmd.Stdin = conn 
   stdout := new(bytes.Buffer)
   cmd.Stdout = io.Write(stdout)
   conn.Write(stdout.Bytes()) 
   cmd.Stderr = conn
   cmd.Run()

Still no output of the commands I enter

Il giorno domenica 11 luglio 2021 alle 21:00:41 UTC+2 LetGo ha scritto:

> AAAAAAAAAH sorry!
>
> It was a really tough day and I tried to code in the worst situation ever, 
> I was really tired that I did not even noticed how stupid and newbie was 
> that, sorry!
> PLEASE just ignore my last comment... ahah Im REALLY embarrassed
> After a break of 2 days, I went back on my code, and after some trials I 
> got something weird.
> Im trying something simple. to test what happens between each step to get 
> out fron that situation- from an io.writer to  *bytes.Buffer to []byte and 
> viceversa..
> Well, once compailed, everything works fine, expect the stout:
>
> once I get the shell, the command /bin/sh -i gets executed If from the 
> server I type a non existing command, *I get the sterr on the server, but 
> I don't get the stout ... I wanna smash my keyboard 
> . https://play.golang.org/p/RWs7Kkccz-S 
> <https://play.golang.org/p/RWs7Kkccz-S>*
> *I mean, if I use these exact line on a simple command in another project, 
> everything works fine, but in that situation it does not, its like if stout 
> goes lost in the space: *
>
> I hope I won't hurt your brain again ahah
> Sorry again, I did not mean that! ahah
>
>
>
>
>
> I
> Il giorno giovedì 8 luglio 2021 alle 20:43:31 UTC+2 Brian Candler ha 
> scritto:
>
>> Complete code on play.golang.org is much easier to understand. At the 
>> moment I don't think your code will do anything useful.  For example
>>
>>                buf := new(bytes.Buffer)
>>                ...
>>                bizz := buf.Bytes()
>>
>> will always set bizz to an empty slice; since you never modify bizz, 
>> len(bizz) will always be zero.  Also,
>>
>>                 kk := io.Writer(z)
>>
>> creates an io.Writer variable with a particular value, but never uses 
>> that value, because 2 lines later you replace it with a different value.  I 
>> can't say for sure without seeing the whole program, but I don't think 
>> that's where the error is occurring; I think it's the later line ("kk = 
>> conn"), because you don't seem to use that value.  It's as if you wrote a 
>> program like this:
>>
>> func main() {
>>     i := 1
>>     i = 2
>> }
>>
>> i.e. you just return and never use the value of "i".
>>
>> I think the previous advice given was good.  Do the go tour, several 
>> times if required; look at the tutorials at https://golang.org/doc/, 
>> look for interesting articles at https://blog.golang.org/index; after 
>> you pick up the core concepts, find some example sockets-based code, run 
>> it, modify it.  Stringing together statements, if you don't understand what 
>> each individual statement does, is unlikely to give a useful result.
>>
>> On Thursday, 8 July 2021 at 18:54:29 UTC+1 LetGo wrote:
>>
>>> I thought that after getting the bytes, chunk the data, I need to have 
>>> the io.writer back before send the chunked data
>>> So far I came up with this:
>>>
>>> ...
>>> cmd.Stdin = conn
>>>                 buf := new(bytes.Buffer)
>>>                 cmd.Stdout = buf
>>>
>>>                 bizz := buf.Bytes()
>>>
>>>         var i int
>>>     for {
>>>     n := int(math.Min(float64(rand.Intn(len(bizz))), float64(len(bizz))))
>>>     d := bizz[i : i+n]
>>>     i += n
>>>
>>>
>>>                     z := bytes.NewBuffer(d)
>>>       
>>>                     kk := io.Writer(z)                                  
>>>        //this line creates the error
>>>
>>>       time.Sleep(400 * time.Millisecond)
>>>
>>>                     kk = conn       
>>>
>>>
>>>         if i >= len(bizz) {
>>>     break
>>>         }
>>>             }
>>> cmd.Stderr = conn
>>> cmd.Run()
>>> .....
>>>
>>> But know I get this error:
>>>
>>> conn.go:95:21: kk declared but not used
>>> Il giorno mercoledì 7 luglio 2021 alle 15:49:56 UTC+2 mlevi...@gmail.com 
>>> ha scritto:
>>>
>>>> You cannot *per se* convert an interface or a struct to a builtin like 
>>>> []byte
>>>> You might wanna have a look at the Bytes method 
>>>> <https://golang.org/pkg/bytes/#Buffer.Bytes> of *bytes.Buffer, which 
>>>> returns the internal buffer of the type as a slice of bytes. Normally that 
>>>> would have been a good exercise to let you find it yourself, and I don't 
>>>> know if it is really "help" to give it to you directly, but as I said, 
>>>> once 
>>>> you are done with your small tool, the next step for you will be to go 
>>>> back 
>>>> from the basic Go constructs :)
>>>>
>>>> Glad I could help, and don't bother with the comments, the best "thank 
>>>> you" I can wish for is that we continue learning together ;)
>>>> Hope the following adventures of your Go journey are as interesting as 
>>>> they are for me!
>>>>
>>>> Cheers
>>>>
>>>> Le mer. 7 juil. 2021 à 15:08, LetGo <non3...@gmail.com> a écrit :
>>>>
>>>>> Thanks for your answer!(:
>>>>> You are right, but I just wanted to have this one little tool in Go  
>>>>> and I have never thought that could be that hard... ahahah
>>>>>
>>>>> By the way, it works as you said, it fixed the error! ( obviously.. ) 
>>>>> the only thing left is to convert type *bytes.Buffer to []byte * I think* 
>>>>> and then I will be almost done.
>>>>> Im already searching how to do that.
>>>>>
>>>>> Once it will work as I wish, I will add your names to my comments ( I 
>>>>> think this is better than any "thank you" ) in the code, to remind me of 
>>>>> your kind help(:
>>>>>
>>>>>
>>>>>
>>>>> Il giorno mercoledì 7 luglio 2021 alle 14:01:33 UTC+2 
>>>>> mlevi...@gmail.com ha scritto:
>>>>>
>>>>>> [Sorry forgot to hit "Reply all"]
>>>>>>
>>>>>> Are you trying to cast cmd.Stdout here?
>>>>>> What you can do is:
>>>>>> buf := new(bytes.Buffer)
>>>>>> cmd.Stdout = buf // buf is an io.Writer so this is fine
>>>>>>
>>>>>> but I don't get the point of the data := foo?
>>>>>>
>>>>>> Maybe, before trying to convert a whole complex program in Python to 
>>>>>> a whole working program in Go, you should take time to familiarize 
>>>>>> yourself 
>>>>>> with the language.
>>>>>> Go through the Go tour <https://tour.golang.org/welcome/1>, read a 
>>>>>> little of the specs, have yourself code some small, simple programs that 
>>>>>> don't require using lots of std packages at once...
>>>>>>
>>>>>> Once you are familiar with the language constructs, which I have to 
>>>>>> say are pretty different from Python's, you will have a better 
>>>>>> understanding of where to start and how to implement your program. 
>>>>>> Otherwise I think this will all only get you confused.
>>>>>> And understanding at least the important basics of Go will help you 
>>>>>> explain your pain points here, if any remains :)
>>>>>>
>>>>>> Hope this helps,
>>>>>>
>>>>>> Le mer. 7 juil. 2021 à 12:41, LetGo <non3...@gmail.com> a écrit :
>>>>>>
>>>>>>> One of these is this:
>>>>>>> ...
>>>>>>>            buf := new(bytes.Buffer)     
>>>>>>>         foo := buf(cmd.Stdout) // this line is 87
>>>>>>>         data := foo
>>>>>>>         var i int
>>>>>>> ...
>>>>>>>
>>>>>>> pkg/conn.go:87:20: cannot call non-function buf (type *bytes.Buffer)
>>>>>>> Il giorno mercoledì 7 luglio 2021 alle 12:10:03 UTC+2 LetGo ha 
>>>>>>> scritto:
>>>>>>>
>>>>>>>> I tried also both of them, but I got stuck into a loop of errors 
>>>>>>>> again.. probably I coded in the wrong way
>>>>>>>>
>>>>>>>> Il giorno mercoledì 7 luglio 2021 alle 11:50:51 UTC+2 Brian Candler 
>>>>>>>> ha scritto:
>>>>>>>>
>>>>>>>>> It makes no sense to convert an io.Writer to a string.
>>>>>>>>>
>>>>>>>>> io.Writer is an interface: any type which has a Write() method.  
>>>>>>>>> So you can pass a string *to* a writer, to get it written somewhere, 
>>>>>>>>> by 
>>>>>>>>> calling the Write() method.  In general, you can't get a string 
>>>>>>>>> *from* a 
>>>>>>>>> writer.  If you google "go io.Writer" you'll get lots of tutorials 
>>>>>>>>> and 
>>>>>>>>> examples.
>>>>>>>>>
>>>>>>>>> Depending on your application though, you might want to create a 
>>>>>>>>> bytes.Buffer <https://golang.org/pkg/bytes/#Buffer> or 
>>>>>>>>> strings.Builder <https://golang.org/pkg/strings/#Builder> object, 
>>>>>>>>> both of which are an io.Writer.  The written data gets appended to a 
>>>>>>>>> buffer 
>>>>>>>>> that you can read later.
>>>>>>>>>
>>>>>>>>> On Wednesday, 7 July 2021 at 10:07:19 UTC+1 LetGo wrote:
>>>>>>>>>
>>>>>>>>>> Thanks for your answer!(:
>>>>>>>>>> You are right, sorry!
>>>>>>>>>> This is the code: https://play.golang.org/p/zEZ2HIUNffs
>>>>>>>>>>
>>>>>>>>>> About the lines, wow! Yes, you got them! ahah
>>>>>>>>>> About the errors, I tried to convert ( cmd.Stdout ) io.Write to 
>>>>>>>>>> bytes/ strings, but.. I have then entered into a loop of errors...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Il giorno martedì 6 luglio 2021 alle 21:32:10 UTC+2 Brian Candler 
>>>>>>>>>> ha scritto:
>>>>>>>>>>
>>>>>>>>>>> You haven't shown which lines 75, 76 and 83 correspond to.  It's 
>>>>>>>>>>> easier if you put the whole code on play.golang.org, and we'll 
>>>>>>>>>>> be able to point to the error.  
>>>>>>>>>>>
>>>>>>>>>>> But I'm guessing it's this:
>>>>>>>>>>>  data := cmd.Stdout
>>>>>>>>>>> ...
>>>>>>>>>>> n := int(math.Min(float64(rand.Intn(len(data))), 
>>>>>>>>>>> float64(len(data))))  << line 75?
>>>>>>>>>>> d := data[i : i+n]  << line 76?
>>>>>>>>>>> ...
>>>>>>>>>>>         if i >= len(data) {   << line 83?
>>>>>>>>>>>
>>>>>>>>>>> If I'm right, the compiler is saying: cmd.Stdout (which you 
>>>>>>>>>>> assigned to 'data') is of type io.Writer.  It's not a string; you 
>>>>>>>>>>> can't 
>>>>>>>>>>> take len(...) of an io.Writer, nor can you slice it.
>>>>>>>>>>>
>>>>>>>>>>> On Tuesday, 6 July 2021 at 16:03:26 UTC+1 LetGo wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I think I made some progress.... I think. Is it right what I'm 
>>>>>>>>>>>> doing ?
>>>>>>>>>>>>
>>>>>>>>>>>> ................
>>>>>>>>>>>> cmd.Stdin = conn
>>>>>>>>>>>> // cmd.Stdout = conn
>>>>>>>>>>>> //         data := []byte(cmd.Stdout)
>>>>>>>>>>>>         data := cmd.Stdout
>>>>>>>>>>>>         var i int
>>>>>>>>>>>>     for {
>>>>>>>>>>>>     n := int(math.Min(float64(rand.Intn(len(data))), 
>>>>>>>>>>>> float64(len(data))))
>>>>>>>>>>>>     d := data[i : i+n]
>>>>>>>>>>>>     i += n
>>>>>>>>>>>>     time.Sleep(400 * time.Millisecond)
>>>>>>>>>>>>     d = conn
>>>>>>>>>>>>
>>>>>>>>>>>>         if i >= len(data) {
>>>>>>>>>>>>     break
>>>>>>>>>>>>         }
>>>>>>>>>>>>             }
>>>>>>>>>>>> cmd.Stderr = conn
>>>>>>>>>>>> cmd.Run()
>>>>>>>>>>>> ............................
>>>>>>>>>>>>
>>>>>>>>>>>> But when I try to build I get these errors:
>>>>>>>>>>>>
>>>>>>>>>>>> conn.go:75:46: invalid argument data (type io.Writer) for len
>>>>>>>>>>>> conn.go:76:16: cannot slice data (type io.Writer)
>>>>>>>>>>>> conn.go:83:22: invalid argument data (type io.Writer) for len
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Il giorno martedì 29 giugno 2021 alle 19:37:04 UTC+2 LetGo ha 
>>>>>>>>>>>> scritto:
>>>>>>>>>>>>
>>>>>>>>>>>>> Thank you guys for all your answers and suggestions!
>>>>>>>>>>>>> I really appreciate!
>>>>>>>>>>>>> Sorry about the screenshots, it was the only way to make the 
>>>>>>>>>>>>> packets "human readable"
>>>>>>>>>>>>> How could you code that kind of implementation based on your 
>>>>>>>>>>>>> knowledge and skill?
>>>>>>>>>>>>> I have noone of these in golang ahah as I said, im too newbie 
>>>>>>>>>>>>> to do all this alone!
>>>>>>>>>>>>> Also not working examples ( if they throw an error I don't 
>>>>>>>>>>>>> care, based on my code are fine!
>>>>>>>>>>>>> These examples could rapresent a great start from me!(:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Il giorno martedì 29 giugno 2021 alle 19:00:06 UTC+2 
>>>>>>>>>>>>> jesper.lou...@gmail.com ha scritto:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Jun 29, 2021 at 5:24 PM LetGo <non3...@gmail.com> 
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks for the answer! (:
>>>>>>>>>>>>>>> In python it was straightforward to implement and it works 
>>>>>>>>>>>>>>> like a charm. It sends small packets with delay between each 
>>>>>>>>>>>>>>> other without 
>>>>>>>>>>>>>>> even care if it is UDP or TCP:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Beware! This is an assumption that will break at some point 
>>>>>>>>>>>>>> in time. Currently the delay and the OS makes things 
>>>>>>>>>>>>>> straightforward for 
>>>>>>>>>>>>>> you. But TCP doesn't behave like you expect, and you are very 
>>>>>>>>>>>>>> likely to run 
>>>>>>>>>>>>>> into trouble if the machine, the network, or the system starts 
>>>>>>>>>>>>>> taking 
>>>>>>>>>>>>>> additional load.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You need to frame the data. A good way is to use 4 bytes as a 
>>>>>>>>>>>>>> size (unsigned 32 bit integer), followed by a payload of that 
>>>>>>>>>>>>>> size. You can 
>>>>>>>>>>>>>> then avoid this becoming an uncontrolled explosion in your 
>>>>>>>>>>>>>> software at a 
>>>>>>>>>>>>>> later date. You can also close connections early if too large 
>>>>>>>>>>>>>> messages get 
>>>>>>>>>>>>>> sent, etc.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "golang-nuts" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>> send an email to golang-nuts...@googlegroups.com.
>>>>>>>
>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/golang-nuts/466d016b-b90b-4505-b4a8-7e5fc62679b4n%40googlegroups.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/466d016b-b90b-4505-b4a8-7e5fc62679b4n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "golang-nuts" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to golang-nuts...@googlegroups.com.
>>>>>
>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/golang-nuts/0f12076e-f325-4583-ba85-857084aec83dn%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/golang-nuts/0f12076e-f325-4583-ba85-857084aec83dn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/70bb1d90-14d0-4a58-8500-fce56d024991n%40googlegroups.com.

Reply via email to